JBoss AS 4.2.3 と seam フレームワークを使用しています。ユーザー数が増えると CPU 使用率が上がり、わずか 80 人のユーザーで 99% に達します。また、Hibernate、EJB3、および Apache を mod_jk と共に使用して負荷分散を行います。
スレッド ダンプを取得すると、すべての実行可能なスレッドが次のトレースで同じアクティビティを実行しています。
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1012)
at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1091)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:384)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:662)
これをスタック トレースで解釈することはできません。また、ユーザーがログアウトした場合でも、同じ状態のスレッドで CPU 使用率が同じままであることがわかりました。