PhusionPassenger:为什么乘客在设置passenger_min_instances = 1后仍然杀死rails进程?

我们的rails 3.2应用程序(部署在passenger/nginx )使用gem ruoteruote worker (负责写入数据库)需要始终保持运行,以便工作。 我们所做的是通过在nginx.conf设置来保持最小的一个实例运行:

 passenger_min_instances 1; 

然而,在大约5min空闲时间之后, ruote worker停止响应。 重新启动nginx之后, ruote worker开始工作了。 我们不知道什么乘客杀死导致问题。 enter code here还有什么我们需要build立在乘客,以保持ruote worker running all the time

这指定了给定应用程序应该存在的最小数量的应用程序进程。 如果您希望在网站闲置较长时间后避免可能的较长启动时间,则应将此选项设置为非零值。

请注意,这个选项在Nginx启动期间不会预先启动应用程序进程。 它只是确保在第一次访问应用程序时:

  1. 至少会产生一定数量的进程。

  2. 即使进程闲置清理(参见passenger_pool_idle_time),也将保持给定的进程数量。

如果您想在Nginx启动期间预先启动应用程序进程,那么您应该使用passenger_pre_start指令,可能与passenger_min_instances结合使用。 这种行为看起来似乎与直觉相反,但是passenger_pre_start解释了它背后的原因。