Tomcat 7.0.23 で Web アプリ (Spring/Hibernate) を実行しています。症状としては、数日 (通常は 4 ~ 5 日) 実行した後、応答が非常に遅くなります。通常 2 秒で読み込まれるページは、30 ~ 50 秒かかります。再起動すると、応答が正常に戻ります (2 秒)。前後にスレッドダンプを取得しました。問題のスレッド (応答に時間がかかっている) がロックされていることがわかります。これがスニペットです。
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
- locked <0x0000000799446298> (a
org.apache.tomcat.util.net.SocketWrapper)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
コードを調べると、同期されたメソッドがあり、それがロックを説明しています。しかし、ロックが物事を遅くしているのなら、なぜそれが新たなスタートから現れなかったのか、そしてなぜ数日間実行した後にだけなのか疑問に思っています. どこを見ようか迷う。手がかりはありますか?前もって感謝します。