本文介绍利用 https://github.com/jvm-profiling-tools/async-profiler 采集 JFR 格式文件,统计 JVM 进程的 CPU 使用率。
文章目录
采集进程信息为 JFR 文件
方式一:对已在运行的 JVM 进程采样
通过 jps -l 查看对应 JVM 进程 PID:
% jps -l
182403 org.gradle.launcher.daemon.bootstrap.GradleDaemon
218726 org.jetbrains.jps.cmdline.Launcher
218132 org.apache.shardingsphere.proxy.Bootstrap
220138 jdk.jcmd/sun.tools.jps.Jps
52986
218111 org.jetbrains.jps.cmdline.Launcher
10124 org.jetbrains.idea.maven.server.RemoteMavenServer36
176222 org.apache.zookeeper.server.quorum.QuorumPeerMain
9837 com.intellij.idea.Main
176223 org.apache.zookeeper.server.quorum.QuorumPeerMain
176221 org.apache.zookeeper.server.quorum.QuorumPeerMain
执行 async-profiler 采样:
./profiler.sh -d 60 -e cpu,lock -i 100ms --lock 10ms -f ~/profiling/proxy-og-%t.jfr 218132
其中:
-d指采样时长,60 即 60 秒-e指采集的事件,至少需要有 cpu-i指 cpu 采样间隔,默认 10ms,间隔设置 10ms 以上几乎对进程本身性能没有影响-f指 JFR 文件输出路径,%t会自动替换成日期时间,文件名结尾.jfr则记录为 JFR 格式文件- 最后的参数是 JVM 进程 PID
详细参数列表可以参考:https://github.com/jvm-profiling-tools/async-profiler#profiler-options
待采样完成后,得到 jfr 格式文件。
% ./profiler.sh -d 60 -e cpu,lock -i 100ms --lock 10ms -f ~/profiling/proxy-og-%t.jfr 218132
Profiling for 60 seconds
Done
方式二:启动 JVM 进程时增加 async-profiler Agent
启动 JVM 进程的时候,可以加入 async-profiler 的 Agent:
java -agentpath:/path/to/libasyncProfiler.so=start,event=cpu,alloc=2m,lock=10ms,file=profile.jfr
参数列表可以参考:https://github.com/jvm-profiling-tools/async-profiler/blob/v2.7/src/arguments.cpp#L52
通过 jfr 获取 CPULoad 事件
假设我们采样所得文件名为 proxy-og-20220424-162745.jfr。通过 JDK 自带的命令 jfr 可以读取 jfr 文件信息。
执行以下命令可以列出 JFR 文件中的事件列表:
jfr summary proxy-og-20220424-162745.jfr
Version: 2.0
Chunks: 1
Start: 2022-04-24 08:27:45 (UTC)
Duration: 60 s
Event Type Count Size (bytes)
=========================================================
jdk.ExecutionSample 2473 38906
jdk.CPULoad 60 1260
jdk.NativeLibrary 28 1996
jdk.ActiveSetting 22 744
jdk.InitialSystemProperty 22 9554
jdk.Metadata 1 5954
jdk.CheckPoint 1 368913
jdk.ActiveRecording
JVM进程CPU使用率监控:async-profiler实战

本文详细介绍了如何使用async-profiler采集JFR格式文件,针对运行中的JVM进程进行CPU使用率统计,并演示了如何解析和分析JFR文件以获取实时性能数据。
最低0.47元/天 解锁文章
2111

被折叠的 条评论
为什么被折叠?



