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

use*_*220 5 ruby-on-rails unicorn

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

Hon*_*gli 5

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

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

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

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

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