Ruby on rails 你能像在独角兽上重新加载一样,在乘客身上重新加载Rails应用程序吗?

Ruby on rails 你能像在独角兽上重新加载一样,在乘客身上重新加载Rails应用程序吗?,ruby-on-rails,passenger,unicorn,Ruby On Rails,Passenger,Unicorn,使用Unicorn,您可以使用kill-USR2[master process]重新启动并重新加载Rails应用程序,它不会立即终止进程,而是在后台启动一个新的主进程+从进程。当新主机准备就绪时,您可以使用kill-QUIT关闭旧主机。这使您可以重新启动网站,而不会让任何访问者注意到请求处理速度的减慢 但是对于Passenger,您可以使用触摸tmp/restart.txt重新启动Rails应用程序,据我所知,这会导致Rails应用程序在重新启动Rails应用程序所需的几秒钟内变得无响应 有没有

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

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

有没有办法使用乘客,同时也可以无缝重启Rails应用程序?

否[现在是-请参阅洪丽的响应] 您要求滚动重启,即在旧的服务器进程被终止之前启动新的服务器进程。乘客(免费版本)不会丢弃请求,但无论何时部署,它们都会排队并延迟

据推测,滚动重启已经实现,并在许可版本中提供,但尚未发布免费版本。我一直不知道如何获得授权版本

有关更多信息,请遵循此google groups线程:


您可以尝试运行两个独立的乘客流程,手动关闭其中一个,而另一个保持不变,但我认为这不是您想要的答案。

中提供了滚动重新启动。


这是klochner提到的“许可版本”,但直到8月份才发布。Phusion Passenger Enterprise完全自动化滚动重启(Unicorn需要一些手动脚本才能使滚动重启以良好的方式运行)。它还包括一系列其他有用的功能,如部署容错、实时IRB控制台等。

这可能会有所帮助,感谢您的回答。现在我也知道要用“滚动重启”这个词了。没问题——正如你从谷歌线程中看到的,我对延迟发布这个功能感到有点失望。这是因为你提到的“许可版本”直到8月份才发布。我在这个主题中的帖子更清楚地说明了这一点。祝贺发布,实时irb控制台看起来非常酷。