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

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

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

  • 将SIGUSR2发送到主进程。 Unicorn使用工作进程启动一个新的主服务器,它与您的旧主服务器和旧工作进程并行运行。
  • 等到新的主进程和工作进程启动。
  • 杀死老主人。

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

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

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