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