如何使用Unicorn进行滚动重启?

时间:2012-10-21 05:34:29

标签: ruby-on-rails unicorn

假设我对我的rails应用程序进行了一些更改,例如更改html布局。如何使用Unicorn进行滚动重启?实际上,有人希望为最新版本的rails应用程序启动独角兽进程(或工作人员?),然后将流量从旧的独角兽进程/工作者原子切换到新的。从Google搜索中我无法得到具体的明确解释,说明如何执行此操作以及围绕它的所有问题。

1 个答案:

答案 0 :(得分:5)

有多种方法,但其中一种方法如下:

  • 将SIGUSR2发送到主进程。 Unicorn使用工作进程启动一个新的master,它与你的旧master和old worker进程并行生存。
  • 等到新的主进程和工作进程开始。
  • 杀死老主人。

来源:http://unicorn.bogomips.org/SIGNALS.html

但这并不是非常友好的。你暂时需要两倍的内存使用量。

Phusion Passenger Enterprise支持滚动重启(以及其他很酷的功能),但它会逐个重启进程,因此不需要那么多内存。可以使用TTIN和TTOUT信号在Unicorn中逐个滚动重启脚本,但Phusion Passenger可以自动为您完成所有操作而无需编写脚本。

相关问题