当我将新版本的服务部署到Heroku时,究竟会发生什么?
假设我现在有N个web dynos在线,其中M个当前正在处理请求。
我没有关于此的任何官方文档,只是相反的帖子(有些人说热migrations are not possible,而others say there is no downtime)。是否有关于部署过程和上述问题的官方详细信息?
答案 0 :(得分:17)
以下是Heroku部署期间发生的事情(截至2011年10月20日当前*)[1]:
一般情况是,为了最大限度地减少任何可能的停机时间,您应该尽量缩短应用的启动时间。
通过遵循谨慎的迁移实践,可以在应用程序运行时推送新代码然后进行迁移。 以下是Rails的示例:http://pedro.herokuapp.com/past/2011/7/13/rails_migrations_with_no_downtime/
要在重新启动期间最大限度地减少连接断开,请使用适当响应SIGTERM的webserve,方法是开始正常关闭(完成现有连接,不要使用新连接)。较新版本的thin将正确处理SIGTERM。
答案 1 :(得分:0)
我可以回答“是否有用于执行自定义迁移的挂钩(例如迁移数据库表)?”这个问题的一部分。我通过编写一个shell脚本来处理迁移,该脚本在我发出“git push heroku”后立即执行“heroku rake db:migrate”。我不知道是否有更多的“钩子” - 这样做。