如何分析Tomcat的堆栈信息?

Tomcat

获取Tomcat的进程号

tomcatPid=`pgrep -u tomcat java`

如果遇到tomcat用户包含其他Java进程的,你可以使用如下命令获取,

tomcatPid=`jps" | grep Bootstrap | awk -F ' ' '{print $1}`

获取Tomcat的堆栈信息

sudo -u tomcat /usr/local/jdk-15.0.2/bin/jstack -l "$tomcatPid" > /data/jstack.log

获取JVM heap dump(堆栈快照)信息

sudo -u tomcat /usr/local/jdk-15.0.2/bin/jmap -dump:live,format=b,file=/data/heap-dump.hprof "$tomcatPid"

另外,以下命令等价,

sudo -u tomcat /usr/local/jdk-15.0.2/bin/jcmd "$tomcatPid" GC.heap_dump /data/heap-dump.hprof

另外,如果需要启动Java时候就自动输出“JVM heap dump”可按如下格式设置,

java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=

参阅文档
================

官方资料
————-
https://docs.oracle.com/en/java/javase/15/docs/api/index.html
https://docs.oracle.com/en/java/javase/15/docs/api/jdk.jcmd/module-summary.html
https://docs.oracle.com/en/java/javase/15/docs/specs/man/jcmd.html
https://docs.oracle.com/en/java/javase/15/docs/specs/man/jstack.html
https://docs.oracle.com/en/java/javase/15/docs/specs/man/jmap.html

没有评论

发表回复

Tomcat
如何配置Tomcat的日志轮转?

1 前言 一个问题,一篇文章,一出故事。 笔者之前为Tomcat日志自动分割写过一个脚本,最近发现如 …

Tomcat
如何用JSSE配置Tomcat 9 HTTPS?

1 前言 一个问题,一篇文章,一出故事。 笔者需要在Tomcat生产环境启用Tomcat的HTTPS …

Tomcat
如何用OpenSSL SSL/TLS配置Tomcat 9 HTTPS?

1 前言 一个问题,一篇文章,一出故事。 笔者需要在Tomcat生产环境启用Tomcat的HTTPS …