0

Heroku で Unicorn を使用しており、EventMachine ループを作成しました: ( https://gist.github.com/jonkgrimes/5103321から)

after_fork do |server,worker|
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection

  if defined?(EventMachine)
    unless EventMachine.reactor_running? && EventMachine.reactor_thread.alive?
      if EventMachine.reactor_running?
        EventMachine.stop_event_loop
        EventMachine.release_machine
        EventMachine.instance_variable_set("@reactor_running",false)
      end
      Thread.new { EventMachine.run }
    end
  end

  Signal.trap("INT") { EventMachine.stop }
  Signal.trap("TERM") { EventMachine.stop }
end

EventMachine はうまく機能しますが、「eventmachine ループが実行されていない」ため、ある時点でイベントが失敗し始めます。考えられる問題は次の 2 つです。

  • ループはまだ実行されていますが、どういうわけか私のユニコーンフォークは適切にバインドされていません (ありそうにない)
  • ループがクラッシュしました(可能性が高いと思われます)

クラッシュした eventmachine を検出して再起動するにはどうすればよいですか? または、この問題をデバッグするにはどうすればよいですか?

4

0 に答える 0