作者: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主要分析调用是否合理,是否平均耗时很低,但是总耗时很高等问题;
  • 找到时间占比较高的代码进行分析、优化;

参考地址

参考地址