本文共 1714 字,大约阅读时间需要 5 分钟。
作为一名开发人员,性能优化是我们每天都需要面对的挑战。CPU 使用率飙升,应用响应变慢,这些问题往往需要我们深入分析代码执行路径。传统的调试方法往往依赖主观猜测,这显然效率低下。而火焰图(Flame Graph)作为性能分析的利器,能够快速定位问题所在,让我们不再“瞎蒙”。
火焰图是一种基于调用栈信息的可视化工具,用于展示CPU执行情况。它通过图形化的方式,直观地呈现程序执行路径,从而帮助我们快速定位性能瓶颈。
perf是Linux系统原生性能分析工具,可以提供函数执行情况及调用栈信息。安装步骤如下:
sudo apt install linux-tools-common
安装完成后,输入以下命令查看版本:
perf -v
从GitHub获取 FlameGraph 源码:
git clone https://github.com/brendan-gregg/flame-graph.git
准备一个简单的SpringBoot项目,放在 FlameGraph 目录下。启动项目:
java -jar springboot-hello-0.0.1-SNAPSHOT.jar
jps -l
sudo perf record -F 99 -p 进程号 -g -- sleep 30
perf script -i perf.data > perf.unfold
sudo FlameGraph/stackcollapse-perf.pl perf.unfold > perf.foldedsudo FlameGraph/flamegraph.pl perf.folded > perf.svg
红蓝分叉火焰图用于对比修改前后性能变化。通过颜色差异,快速定位性能问题。
sudo perf record -F 99 -a -g -- sleep 30
sudo FlameGraph/stackcollapse-perf.pl out.folded1 > out.foldedsudo FlameGraph/difffolded.pl out.folded1 out.folded2 > diff.svg
git clone https://github.com/jvm-profiling-tools/perf-map-agent.git
cmake .make
sudo perf record -F 99 -ag -p 进程号 -- sleep 30./FlameGraph/jmaps
Arthas 是 Alibaba 开发的性能分析工具,支持火焰图生成,操作简便。
转载地址:http://mlefk.baihongyu.com/