Java程序宕机问题-jvm层面排查


1、配置jvm启动参数--宕机前输出堆转储文件和崩溃日志

首先配置jvm启动参数,找到Tomcat目录下的catalina.sh文件,改下面这句话:

#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/dump.bin -XX:+PrintGCDetails -XX:ErrorFile=/data/logs/dump-error.log

 

宕机前输出dump堆转储文件和崩溃日志:

 

 

可以使用jprofiler分析堆转储文件或者https://heaphero.io/heap-index.jsp#header 在线分析堆转储文件。

 

2、运行过程中生成堆转储文件

执行命令,生成堆转储文件:jmap -dump:live,format=b,file=heap-dump.bin

 

3、分析线程CPU消耗情况

top命令查看Java进程号和Java进程CPU使用情况

查看Java进程中所有线程CPU使用情况:top -p java进程号 -H eg:top -p 51334 -H

查看堆栈信息:jstack Java进程号

将消耗CPU最高的线程号转换为16进制:printf "%x\n" 线程号

最后通过16进制的线程号去堆栈信息中去查看此线程的堆栈信息即可。

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM