zoukankan      html  css  js  c++  java
  • 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 " 线程号

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

     

  • 相关阅读:
    测试报告M2
    11.24Daily Scrum(4)
    11.24Daily Scrum(3)
    11.24Daily Scrum(2)
    11.24Daily Scrum
    11.22Daily Scrum(2)
    11.22Daily Scrum
    Echarts中graph类型的运用求教
    Echarts学习求教
    用node编写自己的cli工具
  • 原文地址:https://www.cnblogs.com/fanfuhu/p/12767700.html
Copyright © 2011-2022 走看看