当前位置:  开发笔记 > 开发工具 > 正文

Heroku的停机时间为零

如何解决《Heroku的停机时间为零》经验,为你挑选了2个好方法。

是否有可能在Cedar堆栈上使用Unicorn在Heroku上执行Github零停机部署?

我不完全确定重启是如何在Heroku上运行的,以及我们对重启过程有什么控制,但是我喜欢零停机部署的可能性,直到现在,从我读过的,它是不可能的

这需要一些工作.

    首先,我们需要向后兼容的迁移.我把它留给我们的团队来解决.

    其次,我们希望在推送之后立即迁移数据库,但在重启之前(假设我们的迁移完全向后兼容,这不应该影响任何事情)

    第三,我们想要指示Unicorn启动一个新的主进程并分叉一些工作者,然后交换PID并优雅地关闭旧进程/工作者

我已经搜索了文档,但是我找不到任何可以表明Heroku上可行的内容.有什么想法吗?



1> Ylan S..:

我无法解决迁移问题,但关于重新启动进程和避免等待时间的部分:

heroku有一个名为preboot的beta功能.在部署之后,它首先启动您的新dynos并等待一段时间然后切换流量并杀死旧流量:

https://devcenter.heroku.com/articles/labs-preboot/

我还写了一篇博文,其中使用此功能对我的应用程序的性能改进进行了一些测量:

http://ylan.segal-family.com/blog/2012/08/27/deploy-to-heroku-with-near-zero-downtime/



2> Michael van ..:

您可能对其称为preboot的功能感兴趣.

取自他们的文件:

此功能通过在杀死现有Web dynos之前使用新代码启动Web dynos来提供无缝部署.

某些应用程序需要很长时间才能启动,这可能会导致在部署期间提供HTTP请求时出现无法接受的延迟.

有几点需要注意:

您必须至少有两个Web dynos才能使用此功能.如果您将Web进程类型缩放为1或0,则将禁用预引导.

无论是谁进行部署,都必须等待几分钟,然后新代码开始提供用户请求; 这种情况发生的时间晚于没有预启动的情况(但同时,旧的dynos仍会迅速提供用户请求).

将有一段短暂的时间(一分钟或两分钟),其中heroku ps显示新代码的状态,但旧代码仍在提供用户请求.

有关它的更多信息,请参阅他们的文档.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有