我只有一个几分钟后挂起的 Web 应用程序。基本上,这是一个用于构建和预览表单的应用程序,非常定制,经过几分钟的密集用户交互后,该应用程序就停止工作了。这意味着,请求已完成并且永远不会返回回复。
我“有点”迷失了,因为我也没有找到任何关于 tomcat 日志和应用程序日志中挂起的线索。应用程序服务器正在运行,因为我正在使用 lambda/psi-probe 并且可以毫无问题地检查任何其他甚至是麻烦的应用程序(探针本身是另一个 Web 应用程序)。
该应用程序使用了 hibernate,它可以正常工作很长时间,最近,为了提高性能(如果你只使用它,hibernate 会注入很多查询)我已经通过 java.sql 标准 api 引入了本机 sql。我小心不要将两者混合使用,它们仅在 jsp 中使用,首先使用 hibernate 检索一些(少数)对象,然后使用 jdbc 使用一些逻辑。在使用 jdbc 之前关闭 Hibernate 会话。
我已经阅读了一些关于数据库连接问题(我已经检查过几次并且数据库服务器运行正常)、死锁或失控线程的内容,在 VisualVM 中使用 VisualVM 进行了检查。
那么,任何人都可以提供有关发现或捕获挂起的线索吗?可以提供一些线索来使用 VisualVM 捕获或捕获假设的失控线程或死锁吗?后者会启发我,因为我只看到等待和运行的线程。
我在 mac osx 和 linux(开发和预生产机器)上使用 tomcat 6.0.21(我总是尝试 7.0.11 并获得相同的结果)java 1.6
任何想法都会受到欢迎,谢谢
威利