我们的 rails 3.2
应用程序(部署在 passenger/nginx
上)使用 gem ruote
。 ruote Worker
(负责写入数据库)需要始终保持运行,ruote
才能正常工作。我们所做的是通过在 nginx.conf
中设置来保持至少一个实例始终运行:
passenger_min_instances 1;
但是,在大约 5 分钟
空闲时间后,ruote Worker
停止响应。重启nginx
后,ruote worker
又开始工作。我们不知道是什么乘客杀死了导致这个问题的。 在此处输入代码
我们还需要在乘客中设置什么才能保持ruote worker
始终运行
?
最佳答案
这指定给定应用程序应存在的最小应用程序进程数。如果您想避免网站长时间闲置后启动时间过长,则应将此选项设置为非零值。
请注意,此选项不会在 Nginx 启动期间预启动应用程序进程。它只是确保首次访问应用程序时:
至少会生成给定数量的进程。
即使在空闲清理进程时,也会保留给定的进程数量(请参阅passenger_pool_idle_time)。
如果您想在 Nginx 启动期间预启动应用程序进程,那么您应该使用passenger_pre_start指令,可能与passenger_min_instances结合使用。乍一看,这种行为似乎有悖常理,但 Passenger_pre_start 解释了其背后的基本原理。
关于ruby-on-rails - Phusion乘客 :Why passenger still kills rails process after set passenger_min_instances = 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625886/