java - 在运行时对 Tomcat 7 进行故障排除

标签 java tomcat runtime

我有问题,不知道如何找到可能出错的线索。我部署了我的 web 应用程序 (spring - hibernate - MySQL) 并在它启动后的几秒钟内运行良好。我可以浏览页面。比所有请求都得到堆栈并且没有加载任何内容。所有页面都挂了。当我输入错误的页面时出现 PageNotFound 404 错误。

问题是我在 Activity 进程中有 tomcat7.exe,内存随着时间的推移略有增加。所以我怀疑内存泄漏。如何从 tomcat 获取内存堆?什么堆分析器最适合找出泄漏?

PS:原来是ComboPooledDataSource中的maxPoolSize只有15。将其增加到 200,现在一切正常。

最佳答案

此处需要线程转储。它会让您深入了解 Tomcat 处理器 (TP) 线程正在做什么以及堆统计信息(假设是最新的 Sun JVM)。除非您看到高 CPU 使用率与内存增长达到最大配置堆大小,否则内存泄漏可能不是您的问题。

更有可能是阻塞线程和阻止请求完成的情况,可能是连接池等公共(public)资源。如果您不熟悉读取线程转储输出,使用线程转储分析应用程序会有所帮助。您还可以考虑启用 Tomcat 管理器应用程序,它提供一些有用的状态信息(很像 Apache 服务器状态)并使用 jconsole 通过 JMX 监控 JVM。

关于java - 在运行时对 Tomcat 7 进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8481343/

相关文章:

java - 导入的jar包不存在

tomcat - xwiki 错误 : Duplicate query mapping getSpaceDocsName

java - Bonita Open Solution 5.4 的 JBoss、Tomcat 或 Glassfish?

ios - 如何在运行时每 0.2 秒在屏幕上的不同位置重新创建屏幕上的相同节点?

android - 设置运行参数?

java - 生成给定字符串的所有排列

java - 如何使此方法对所有传递的类类型通用?

java - 为什么测试需要永远执行

java - 如何将 Tomcat 嵌入到 Spring Framework MVC 应用程序中?

java - 动态规划 - 什么是渐近运行时?