最近、JBoss AS で問題が発生しており、根本原因を特定できません。
ポート 8009 で AJP プロトコルを使用してリクエストを jboss に配信する jboss サーバーの前に apache ロード バランサーがあります。
最近、システムでワーカー スレッドが停止する問題が発生しています (jboss.web の jmx コンソールや、スレッド ダンプの発行時にも発生します)。
現在、AJP 接続の maxThreads は 700 に設定されており、完全に最大になるまでに最大 3 日かかります。その時点で、問題を解決するために jboss サービスを再起動します。
これらのスレッドは、スレッド ダンプで次のように表示されます。
**Thread: ajp-0.0.0.0-8009-4 : priority:5, demon:true, threadId:90, threadState:RUNNABLE**
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1036)
org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1115)
org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:383)
org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:662)
**Thread: ajp-0.0.0.0-8009-5 : priority:5, demon:true, threadId:91, threadState:RUNNABLE**
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1036)
org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1115)
org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:383)
org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:662)
**Thread: ajp-0.0.0.0-8009-6 : priority:5, demon:true, threadId:92, threadState:RUNNABLE**
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1036)
org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1115)
org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:383)
org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:662)
**Thread: ajp-0.0.0.0-8009-7 : priority:5, demon:true, threadId:93, threadState:WAITING**
- waiting on <0x42ee5ce8> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:442)
java.lang.Thread.run(Thread.java:662)
等...
jboss で実行されている Web アプリは、Jersey 実装を使用して、使用可能なファイルのリストをクライアントに返すか、application/octet-stream を使用してファイル自体を返します (InputStream をエンティティとして Jersey 応答に追加します)。
前もってありがとう、メニー