您是否可以使用与在Unicorn上重新加载一个Rails应用程序相同的无缝方式在Passenger上重新加载Rails应用程序?

时间:2012-01-18 11:53:50

标签: ruby-on-rails passenger unicorn

使用Unicorn,您可以使用kill -USR2 [master process]重新启动并重新加载Rails应用程序,该应用程序不会立即终止进程,而是在后台启动新的主进程+从进程。新主服务器准备就绪后,您可以使用kill -QUIT关闭旧主服务器。这使您可以重新启动网站,而不会让任何访问者注意到请求处理速度变慢。

但是使用Passenger,您可以使用touch tmp/restart.txt重新启动Rails应用程序,据我所知,这会导致Rails应用程序在重启Rails应用程序所需的几秒钟内无响应。

有没有办法使用Passenger,还能让Rails应用程序无缝重启?

2 个答案:

答案 0 :(得分:2)

Phusion Passenger Enterprise中提供滚动重启。

这是klochner谈到的“许可版本”,但直到8月才发布。 Phusion Passenger Enterprise完全自动化滚动重启(Unicorn需要一些手动脚本来使滚动重启表现得很好)。它还包括一些其他有用的功能,如部署错误抵抗,实时IRB控制台等。

答案 1 :(得分:1)

否。 [现在是 - 请参阅hongli的回复]

你要求滚动重启,新服务器进程在旧服务器被杀之前启动。 Passenger(免费版本)不会删除请求,但无论何时部署,它们都会排队等候。

滚动重启据称已经实现,并且在许可版本中可用,但尚未针对免费版本发布。我一直无法弄清楚如何获得许可版本。

关注此google网上论坛获取更多信息:

https://groups.google.com/forum/#!msg/phusion-passenger/hNvU-ZE7_WY/gOF9XWmhHy0J

您可以尝试运行两个独立的乘客流程,并在另一个人熬夜时手动关闭一个,但我不认为这是您正在寻找的答案。