1

実行中の各プロセスにUSR2シグナルを送信する、mongrelクラスターのローリングリスタートモードがあります。

これは、ほとんどの場合、うまく機能します。ただし、非常にまれに、mongrelプロセスがシャットダウンしてから再起動に失敗し、次のエラーが発生します。

/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/tcphack.rb:12:in 
 `initialize_without_backlog': Address already in use - bind(2) (Errno::EADDRINUSE)
    from /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/tcphack.rb:12:in `initialize'
    from /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:93:in `new'
    from /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:93:in `initialize'
    from /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:139:in `new'
    from /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:139:in `listener'

雑種のソースを見ると、USR2ハンドラーは実行中のサーバーで同期停止を呼び出すため、ソケットが解放されるまでブロックする必要があります。

誰かがこのエラーを見たことがありますか?

誰かがそれを引き起こす可能性のあるアイデアを持っていますか?

4

0 に答える 0