I have a web app (spring/hibernate) running on Tomcat 7.0.23. The symptom
is that after running for few days (4 to 5 days typically) the response
becomes very slow. The page that usually loads in 2 seconds takes anywhere
from 30 to 50 seconds. A restart brings the response back to normal (2
sec). I have taken thread dumps before and after. I see the thread in
question (which is taking longer time to respond) has a lock. Here is the
snippet.

  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)

Upon looking into the code, there is a synchronized method and that
explains the lock. But, I am wondering if the locking is slowing the things
down  then why didn't it manifest from the fresh start and why only after
running for few days. Wondering where to look. Any clues? Thanks in advance.

Reply via email to