2

我正在运行一个在初始化程序中启动 Rufus 调度程序进程的应用程序。该应用程序在生产中与Passenger一起运行,我注意到一些奇怪的行为:

首先,为了重新启动服务器并确保初始化程序运行,您必须同时touch tmp/restart.txt在浏览器中加载应用程序。此时,初始化程序触发。可怕的是,如果你只进行触摸,Rufus 安排的进程会被重置并且不会重新安排,直到你在浏览器中加载应用程序。

就这点我能应付。但这导致了第二个问题:我会注意到计划的进程没有运行,所以我加载了一个页面,突然日志文件告诉我它正在运行初始化程序,就像我重新启动一样。因此,在某些时候,Passenger 会随机重启,就好像我触摸了 tmp/restart.txt 并清除了我的预定进程一样。

我对Passenger 和Rails 的集成非常缺乏了解,所以我不知道这种偶尔的重启是异常的还是整个架构的一部分。任何人都可以就这种情况提供任何智慧吗?

4

1 回答 1

2

你描述的是Passenger的工作方式。它会在流量允许时生成应用程序的新实例,并在一段时间不活动后关闭它们以释放资源。

您应该阅读乘客文档,尤其是资源控制和优化部分。如果您想要的话,有一些设置可以防止应用程序被乘客关闭。

使用PassengerPoolIdleTime 设置,您可以保持至少一个进程运行,但您几乎肯定希望Passenger 在必要时启动应用程序的其他实例。Rufus Scheduler Google Group 上的此线程提到使用锁定文件来防止多个进程启动调度程序,这可能对您有用。

于 2010-02-11T21:30:59.170 回答