2

我在 tomcat 上运行一个 Web 应用程序。当有很多请求被触发时,Tomcat 进程会挂起。由于这是一个生产网络应用程序,我无法一直监控以手动获取 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 线程转储收集到所需的磁盘位置[命令行或编程]?

4

1 回答 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 前后的世代大小、堆的总大小、提升的对象大小以及所用时间。

HotSpot VM 故障排除指南 > 命令行选项

于 2014-09-16T12:50:08.193 回答