优雅地缩小Heroku Web Dynos

问题描述

Heroku具有强大的实用程序来管理网络测功。当我们制作一个小版本时,我们使用Preboot来将网络测功机平稳地切换到新版本。

但是,如果您想缩小网络测功机,则没有优雅的方法。理想情况下,我们可以标记一个Web动态,以便Heroku Scheduler在发送SIGTERM之前的3分钟内停止向其发出新请求。

因此,如果我有6台dynos正在运行,但我想在办公时间以外ps:scale web=2,则将SIGTERM发送给其他4台。如果在较慢的时间内有一个游走者被路由到这4台中的一个(而不是剩下的2个),他们将因SIGTERM而崩溃。

有没有办法适当缩小网络测功?

解决方法

正确地处理SIGTERM是正常关机的推荐方法,请参见https://devcenter.heroku.com/articles/dynos#graceful-shutdown-with-sigterm。请注意,这也与预引导过程中发生的关闭过程相同。因此,当您的进程收到SIGTERM时,它应停止响应请求,并完成对当前请求的响应,如果30秒钟后仍未退出,则该进程将被强制执行SIGKILL。没有内置的方法可以执行滚动缩减,您必须在Heroku API上编写自己的接口才能实现此目的。