目录
2.1. 配置
1. 目标
总结排查JVM问题时可以使用的工具、策略、措施等。
2. 准备工作
2.1. 配置
2.1.1. oom时自动dump heap
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=存放dump的目录
2.1.2. 持续性的JFR
JFR Java flight recording java运行记录。当应用出问题时,JFR可以提供最近一段时间的dump data。JFR对很多问题都能提供帮助,如memory leaks to network errors, high CPU usage, thread blocks。
命令行
允许jmc操作
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
Start a profiling recording
-XX:StartFlightRecording=delay=20s,duration=60s,name=myrecording,filename=C:\TEMP\myrecording.jfr,settings=profile
Start a continuous recording
-XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/tmp,maxage=6h,settings=default
jcmd指令
2.1.3. 输出GC日志
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime
-XX:+PrintHeapAtGC -Xloggc:存储gclog的文件路径
-verbosegc 输出内容少,无法看到各个代的回收情况
2.1.4. JMC JMX远程监控
应用启动时开启JMX
-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false
应用启动之后,独立开启JMX
jcmd pid ManagementAgent.start options
2.2. 收集数据
log
heap dump
JFR
thread stack
3. 诊断工具
3.1. 分类
事后诊断
用于应用crash之后诊断问题
悬停\死机进程诊断
用于死机或死锁应用的诊断
监控
监控正在运行的应用
3.2. JMC
Oracle Java Mission Control 是一个用于对 Java 应用程序进行管理、监视、概要分析和故障排除的可视化工具套件。
首次安装时,Java Mission Control 包括 JMX 控制台和 Java 飞行记录器。从 Mission Control