我有一个在 Tomcat 7.0.23 上运行的网络应用程序(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)
查看代码后,有一个同步方法,它解释了锁。但是,我想知道锁定是否会减慢速度,那么为什么它没有从新的开始出现,为什么只在运行几天后才出现。想知道在哪里看。有什么线索吗?提前致谢。