独角兽吞下USR2信号

时间:2014-07-23 21:48:57

标签: ruby-on-rails ruby signals unicorn

我们的独角兽过程完全吞噬USR2信号。它似乎绝对没有。

发送信号时,unicorn.log中绝对没有记录任何内容。通常导致此问题的不是Gemfile错误。

Unicorn对其他信号做出响应(USR1,QUIT等)

网上有一个人有同样的问题,我们最终使用了他的“解决方案”:

before_fork do |server, worker|
  Signal.trap('USR2') do
    server.send(:reexec)
  end
end

这最终会调用与通常相同的东西:https://github.com/defunkt/unicorn/blob/20f3b0c94474709fc6468a8a707b1c205ca80677/lib/unicorn/http_server.rb#L306-307

这个解决方案有效,但显然感觉非常hacky。还有其他事情发生在这里。我在系统上的所有宝石上运行了grep,唯一提到USR2的是Unicorn和雨滴(独角兽的依赖)。我不知道这个信号是如何被吞噬的。

这是一个Ruby 2.0.0p0 Rails 4应用程序。

1 个答案:

答案 0 :(得分:0)

回到这里查看 - 解决方案与Unicorn restart issue with capistrano相同,我们完全错过了Unicorn文档的那部分。