作者:Eddy 历史版本:1 最后编辑:Eddy 更新时间:2024-10-24 16:08
编写版本:v3.3.7
适用版本:所有版本
本文使用JProfiler 11
本地jvm监控
本地启动一个需要监控的java程序
启动JProfiler
选择Attach to a running JVM,start
选择on this computer
配置监控级别
Instrumentation,完整监控
- 包含jvm的完整信息;
- CPU信息;
- 方法调用次数、平均耗时;
- 其它;
- 会拖慢java程序的性能,慢两倍左右;
Sampling,CPU监控
- 只有CPU信息,无法看到每个方法的调用次数、平均耗时;
- 会拖慢java程序的性能,慢一倍左右;
监控界面说明
主要关注内存、线程、GC、CPU情况;
CPU views使用
该视图可以看到每个方法的CPU耗时,以及调用次数、平均耗时;
需要单独开启
监控,默认是不记录CPU信息的;
- 视图说明
- 过滤查询
- 热点代码监控
调用次数越大、平均越低,说明需要调整调用频率,调用不正确,需要优化;
同样可以使用filter过滤需要关注那些代码的执行;
Stop Recordings,停止监控,避免干扰
Save Snapshot,保存快照,方便后续分析
远程jvm监控
远程启动一个需要监控的java程序;
以远程linux系统下的java为例;
远程linux安装JProfiler
需要与我们本地的JProfiler版本一致
启动远程JProfiler
JProfiler必须与java程序在同一个用户下;
- 进入${JProfiler_home}/bin
- ./jpenable
- 选择需要监控的程序序号
- 选择监控模式,默认使用GUI
- 输入通讯端口
启动JProfiler
选择Attach to a running JVM,start
选择on another computer
后续操作与本地监控一致;
配置监控级别等后续操作;
如何分析监控结果
- 主要分析CPU views中的Call Tree、Hot Spots;
- Call Tree中可以分析每个请求中与那些代码耗时,每行开头有一个n.m%的时间占比;
- Hot Spots主要分析调用是否合理,是否平均耗时很低,但是总耗时很高等问题;
- 找到时间占比较高的代码进行分析、优化;