これは少し複雑であり、可能な他のStackExchangeサイトに属しています。Tomcatプロセスが他のプロセスを再バインドからポートン再起動にブロックします。
Tomcat Webアプリケーションと「監査」アプリケーションがあります。監査アプリケーションは独自のプロセスで実行され、ポート60000からHTTP要求を待ち受けます。通常の状態では、TomcatはHTTP経由で監査データを監査プロセスに送信します。両方のプロセスは同じホスト上で実行されます。
システムはCentOS 5.7、Tomcatはバージョン6.0.33です。監査アプリケーションはFlumeエージェントです。
場合によっては、監査アプリケーションを再起動する必要があります。そうすると、通常は成功します。
監査アプリケーションが再起動すると、ポート60000でBindExceptionが発生して失敗することがあります。監査アプリケーションを停止し、実際に停止してから再起動しますが、失敗します一貫してこの問題を解決する唯一の方法は、Tomcatサーバーを再起動することです。何らかの理由で、監査アプリケーションがポート60000でリッスンするのをブロックしています。
監査アプリケーションがダウンしているときに "lsof"ポート60000、我々が得る:60000、時折ポート60000
ウェブアプリを聞いてから、他のアプリケーションをブロックしている:
java 13178 tomcat 47u IPv6 34165085 TCP <hostname>:60000-><hostname>:60000 (ESTABLISHED)
は、私たちは本当に唯一のローカルホストに書き込み、このTomcatプロセスは、どのように理解することはできません関連している可能性がある場合は、Javaに組み込まれているデフォルトのHTTP接続キャッシュを使用しています。
これは、fin_wait_2にタイムアウトしないことに関連している可能性があります。これを小さな値に設定してみてください。 netstatは何を示していますか? – jontro
@jontroおっと、いいえ、私は再びその状態になるまで待つ必要があります。最後のコメントを無視する(削除されました) –
@ThomasAndrews Tomcatのアプリがどのようにデータを送信するのですか?ポート60000へのソケットを開きますか? –