用于监控一个运行中的 Java 服务,并生成实时的火焰图。
步骤:
-
安装必要的工具:
-
安装
perf工具:sudo yum install perf -
下载并配置 FlameGraph 工具,可参考之前提到的步骤。
-
安装
inotify-tools工具,用于监控文件变化:sudo yum install inotify-tools
-
-
启动 Java 服务:
确保你的 Java 服务已经在运行中。
-
收集性能数据:
在 Java 服务运行时,使用
perf工具收集性能数据,并将数据传输给flamegraph.pl生成火焰图。perf record -F 99 -g -p `pidof java` -
实时生成火焰图:
编写一个脚本,使用
inotifywait监视性能数据文件的变化,一旦有新数据写入,立即触发火焰图的生成。#!/bin/bash # 定义输出火焰图的目录和文件名 output_dir=/path/to/flamegraphs output_file="$output_dir/perf.svg" # 如果输出目录不存在,则创建它 mkdir -p "$output_dir" # 监视性能数据文件的变化,一旦有新数据写入,立即触发火焰图生成 while inotifywait -qq -e modify /path/to/perf.data; do # 生成火焰图 perf script | stackcollapse-perf.pl | flamegraph.pl > "$output_file" done将上述脚本保存为
generate_flamegraph.sh并赋予执行权限:chmod +x generate_flamegraph.sh然后运行该脚本:
./generate_flamegraph.sh -
查看火焰图:
使用浏览器访问生成的火焰图文件,即可实时查看 Java 服务的性能数据和火焰图。
firefox /path/to/flamegraphs/perf.svg
通过这些步骤,你可以在运行中的 Java 服务上实时生成并查看火焰图,以帮助分析性能瓶颈和调优优化。