【问题标题】:Can you reload a Rails app on Passenger in the same seamless way as you can reload one on Unicorn?您能否像在 Unicorn 上重新加载一个 Rails 应用程序一样无缝地在Passenger 上重新加载一个Rails 应用程序?
【发布时间】:2012-01-18 11:53:50
【问题描述】:

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

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

有没有办法在使用Passenger的同时让Rails应用无缝重启?

【问题讨论】:

标签: ruby-on-rails passenger unicorn


【解决方案1】:

Phusion Passenger Enterprise 中提供滚动重启。

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

【讨论】:

  • 恭喜发布,现场 irb 控制台看起来很酷。
【解决方案2】:

没有。 [现在是的 - 见红利的回应]

您要求滚动重启,在旧的服务器进程被杀死之前启动新的服务器进程。乘客(免费版)不会丢弃请求,但无论何时部署,它们都会排队并延迟。

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

关注这个 google 群组线程以获取更多信息:

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

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

【讨论】:

  • 感谢您的回答。现在我也知道使用“滚动重启”这个词了。
  • 没问题 - 正如您从 google 线程中看到的那样,我对延迟发布此功能感到有些沮丧。
  • 那是因为你提到的“授权版”直到8月份才发布。我在这个主题中的帖子更清楚地说明了这个问题。
猜你喜欢
  • 2011-04-05
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多