自动化Tomcat线程/堆转储以进行进一步分析

时间:2014-09-13 10:42:48

标签: java tomcat jvm-arguments jvisualvm thread-dump

我正在tomcat上运行一个Web应用程序。当有大量请求被触发时,Tomcat进程挂起。由于这是一个生产Web应用程序,我无法监视所有时间手动获取tomcat java进程/线程转储。

我已经在tomcat上启用了jmx远程端口

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=2222 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true

我的问题是:当tomcat进程遇到高CPU [线程数] /内存使用/挂起时,在那个时间点我们可以自动收集tomcat线程转储到所需的磁盘位置[命令行还是以编程方式]?< / p>

2 个答案:

答案 0 :(得分:0)

This article解释了如何安排自动线程转储。我建议看看。

答案 1 :(得分:0)

这些选项:

JAVA_OPTS='-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dir'

当Tomcat内存不足时,

将进行核心转储。

在这种情况下,-verbose:gc选项也可能有用。

  

B.2.3 -verbose:gc选项

     

-verbose:gc选项启用垃圾收集(GC)的日志记录   信息。它可以与其他HotSpot VM特定选项结合使用   比如-XX:+PrintGCDetails-XX:+PrintGCTimeStamps更进一步   有关GC的信息。信息输出包括的大小   每个GC之前和之后的几代人,堆的总大小,   提升对象的大小,以及所花费的时间。

Troubleshooting Guide for HotSpot VM > Command-Line Options