Rails在生产乘客中不断重启

时间:2010-02-11 17:57:25

标签: ruby-on-rails passenger rufus-scheduler

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

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

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

我对Passenger和Rails集成的理解非常差,所以我不知道这种偶然的重启是异常的还是架构的所有部分。任何人都可以在这种情况下提供任何智慧吗?

1 个答案:

答案 0 :(得分:2)

您描述的是乘客的工作方式。它会在流量保证时生成应用程序的新实例,并在闲置一段时间后关闭它们以释放资源。

您应该阅读Passenger文档,尤其是Resource Control and Optimization section。有些设置可以阻止Passenger关闭应用程序,如果这是你想要的。

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