【问题标题】:Unicorn swallowing USR2 signals独角兽吞下 USR2 信号
【发布时间】:2014-07-23 21:48:56
【问题描述】:

我们的独角兽进程完全吞噬了 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。这里还有其他事情发生。我在系统上的所有 gem 上运行了grep,唯一提到 USR2 的是 Unicorn 和雨滴(Unicorn 的依赖项)。不知道这个信号是怎么被吞掉的。

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

【问题讨论】:

标签: ruby-on-rails ruby signals unicorn


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2012-01-05
    • 2011-09-29
    相关资源
    最近更新 更多