【发布时间】:2012-03-25 05:31:33
【问题描述】:
也许你已经看到了……
2012-03-07T15:36:25+00:00 heroku[web.1]:使用 SIGTERM 停止进程 2012-03-07T15:36:36+00:00 heroku[web.1]:使用 SIGKILL 停止进程 2012-03-07T15:36:36+00:00 heroku[web.1]:错误 R12(退出超时)-> 进程未能在 SIGTERM 的 10 秒内退出 2012-03-07T15:36:38+00:00 heroku[web.1]:进程以状态 137 退出这是在heroku 上运行unicorn 时众所周知的问题...
我可以告诉heroku发送SIGQUIT吗?或者我可以告诉独角兽将SIGTERM 视为正常关闭吗?
【问题讨论】:
-
我不知道。我正在考虑一个项目的独角兽,但这让我重新考虑。以下是 Thin 使用的信号:github.com/macournoyer/thin/blob/master/lib/thin/server.rb#L211 在这两种情况下,QUIT 表示正常关闭,但交换了 INT 和 TERM。
-
顺便说一句,这里还有另一个因素——heroku 会将 TERM 发送到 Procfile 中定义的进程,但是该进程负责在它认为合适的时候传递信号。因此,如果您在 bundle exec 后面运行您的服务器,即使 heroku 发送了正确的信号,您也会看到上述行为,因为网络服务器根本没有收到信号。我已经讨论过这个问题,他们正在提出解决方案。
-
今天发现了这个,还没探索:github.com/ddollar/foreman/wiki/Custom-Signals
标签: ruby heroku signals unicorn