通过集群模式和preload_app进行Puma零宕机时间部署-新连接和当前连接会发生什么?

时间:2019-01-22 17:07:20

标签: ruby-on-rails nginx puma application-server

现在,我已经成功运行了puma设置,并通过分阶段重启(在nginx之后)实现了零停机部署。

由于没有连接丢失并且可以无缝使用新版本,因此效果很好。

但是:现在,我们将进程数设置为CPU数量-1,因此对于具有32个CPU的大型服务器,有31个puma进程,它们会在分阶段重新启动期间逐个重新启动。 对于我们来说,这确实需要很长时间(大约15分钟,因为每个进程需要大约30秒才能启动(是的,很多宝石,大型系统))。

我看到集群模式也可以通过设置preload_app!用于快速部署-但我不知道部署期间会发生什么:

当前请求会被丢弃吗?是否有一个很小的时间范围,不接受任何新的连接?我试图通过自述文件来弄清楚,但是我不清楚发生了什么。

很高兴听到一个解释,谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,我自己进行了测试:新的连接卡住了,您必须等到工作人员完成加载为止。现有连接未关闭。因此,对于零停机时间部署,您确实需要分阶段重新启动(缺点是如果有很多工作人员,则需要很长时间)。