ご挨拶
Ubuntu8.04 の Java6 の Tomcat6 で webapp を実行しています。このアプリのメイン サーブレットは、次の簡単なコードで ServerSocket を開きます。
ServerSocket serverSocket = new ServerSocket(6767);
Socket xmlSocket = serverSocket.accept();
もちろん、これは別のスレッドで実行され、必要な try-catch ブロックが使用されます。
Tomcat を起動すると、すぐに CPU 負荷が 100% になり、クライアントがポート 6767 に接続するまでその状態が続きます。クライアントが接続されている限り、負荷は 0% になります。クライアントが切断されるとすぐに、負荷は 100% に戻ります。
誰がこれが何について教えてくれますか?
ありがとう!
解決:
以下の両方の回答は非常に役に立ちました。この問題は、実際には ServerSocket とは関係ありませんでしたが、アプリのまったく別のスレッドでのスリープレス while ループと関係がありましたが、クライアントが接続されているかどうかにも依存していました。
JDK コマンド「jstack」でアクティブなスレッドを特定できたので、ランナウェイ ループのあるスレッドを簡単に見つけることができました。
助けてくれてありがとう!:)