代码之家  ›  专栏  ›  技术社区  ›  BvuRVKyUVlViVIc7

使用集群模式和预加载应用程序部署Puma零停机时间-新连接和当前连接会发生什么?

  •  0
  • BvuRVKyUVlViVIc7  · 技术社区  · 7 年前

    现在,我已经成功运行了我的Puma安装程序,通过分阶段重启(在nginx后面提供)实现了零停机部署。

    它工作得很好,因为没有连接丢失,新版本无缝可用。

    但是:现在我们将进程计数设置为CPU的数量-1,因此对于一个32个CPU的大型服务器,有31个PUMA进程,在阶段性重启期间一个接一个地重新启动。 这对我们来说需要很长的时间(大约15分钟,因为每个过程大约需要30秒来引导(是的,很多gems,大系统))。

    我看到集群模式也可以用于快速部署和设置 preload_app! -但我不明白在部署过程中发生了什么:

    当前请求会被删除吗?是否有一个小的时间框架,不接受新的连接?我试图通过自述文件来解决这个问题,但我不清楚到底发生了什么。

    很高兴听到解释,谢谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   BvuRVKyUVlViVIc7    7 年前

    好吧,我自己测试过:新的连接会被卡住,你必须等到你的工人完成装载。现有连接未关闭。因此,对于零停机时间部署,您确实需要进行阶段性重启(缺点是,如果有许多工人,则需要花费相当长的时间)。