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

时间:2011-12-12 21:47:34

标签: java tomcat runtime

我有问题,不知道如何得到一些可能出错的线索。我部署了我的Web应用程序(spring - hibernate - MySQL)并在启动后几秒钟工作正常。我可以浏览这些页面。比所有的请求得到堆栈,什么都没有加载。所有页面都悬挂着。当我输错页面时会出现PageNotFound 404错误。

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

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

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这里需要一个线程转储。它将为您提供所需的洞察力,以了解Tomcat处理器(TP)线程正在执行的操作以及堆统计信息(假设最近的Sun JVM)。除非您看到高CPU利用率以及内存增长达到最大配置堆大小,否则内存泄漏可能不是您的问题。

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