使用Unicorn,您可以使用kill -USR2 [master process]
重新启动并重新加载Rails应用程序,该应用程序不会立即终止进程,而是在后台启动新的主进程+从进程。新主服务器准备就绪后,您可以使用kill -QUIT
关闭旧主服务器。这使您可以重新启动网站,而不会让任何访问者注意到请求处理速度变慢。
但是使用Passenger,您可以使用touch tmp/restart.txt
重新启动Rails应用程序,据我所知,这会导致Rails应用程序在重启Rails应用程序所需的几秒钟内无响应。
有没有办法使用Passenger,还能让Rails应用程序无缝重启?
答案 0 :(得分:2)
Phusion Passenger Enterprise中提供滚动重启。
这是klochner谈到的“许可版本”,但直到8月才发布。 Phusion Passenger Enterprise完全自动化滚动重启(Unicorn需要一些手动脚本来使滚动重启表现得很好)。它还包括一些其他有用的功能,如部署错误抵抗,实时IRB控制台等。
答案 1 :(得分:1)
你要求滚动重启,新服务器进程在旧服务器被杀之前启动。 Passenger(免费版本)不会删除请求,但无论何时部署,它们都会排队等候。
滚动重启据称已经实现,并且在许可版本中可用,但尚未针对免费版本发布。我一直无法弄清楚如何获得许可版本。
关注此google网上论坛获取更多信息:
https://groups.google.com/forum/#!msg/phusion-passenger/hNvU-ZE7_WY/gOF9XWmhHy0J
您可以尝试运行两个独立的乘客流程,并在另一个人熬夜时手动关闭一个,但我不认为这是您正在寻找的答案。