常用命令
命令:dashboard
查看jvm总体信息,包括线程,内存和运行环境
命令:monitor
- monitor -c 5 com.liubike.ta.controller.service.ApiService newString "param[1]=2"
- 每5秒统计一次监控方法被调用的次数
命令:heapdump
heapdump --live /tmp/dump.hprof
- dump存活的堆栈信息
- 注意cup开销
命令:memory
- jvm内存分布
命令:profiler
生成数据火焰图
profiler start --event alloc 开启采集
- profiler getSamples 采集数量
- profiler stop --format html 停止采集,生成报告
命令:stack
- stack com.lizz.ta.controller.service.ApiService runNum -n 3
- 查看3次ApiService类中runNum方法的调用路径
命令:
trace
- trace com.lizz.ta.controller.service.ApiService runNum -n 3
- 查看3次ApiService类中runNum方法的内部调用路径和处理时间
命令:tt
- tt -t com.lizz.ta.controller.service.ApiService runNum -n 3
- 记录方法调用状态,是否正常返回,是否异常,时间等。
命令:watch
- watch com.lizz.ta.controller.service.ApiService runNum -n 2 -x 3 -s -b
- 查看方法调用前和调用后的数据。
案例1:CPU过高
thread 查看线程CPU占比,查看其中cpu使用占比过高的数据
thread pid查看线程堆栈
排查相关代码
案例2:内存过高
- thread 查看线程耗时
- thread pid查看线程堆栈
- monitor查看方法被调用次数
- watch查看线程内部数据情况
使用火焰图查看内存分配情况
- profiler start --event alloc 采集内存分配情况
- profiler getSamples 已采集的数量
- profiler stop --format html 关闭采集,并生成html文件