FlameGraph火焰图
1.火焰图介绍
主要应用在性能分析的场景
2.安装
perf
sudo yum install perf -y
Java 8
Java 8 update 60 build 19
check :java -version, 输出:java version "1.8.0_60" (build 1.8.0_60-b27)
for build perf-map-agent
g++, gcc, make.
sudo yum install gcc -y && sudo yum install gcc-c++ -y sudo yum install make -ycmake 公司环境提供的 cmake版本过低, 需要使用版本较高的. cmake-3.8.0-rc2-Linux-x86_64, 地址
cd /home/q/flame
sudo wget --no-check-certificate "https://cmake.org/files/v3.8/cmake-3.8.0-rc2-Linux-x86_64.tar.gz"
tar -xvf
把cmake加入到系统配置中
sudo vim /etc/profile
#加入以下的配置
export CMAKE_HOME=/home/q/flame/cmake-3.8.0-rc2-Linux-x86_64
export PATH=$PATH:$CMAKE_HOME/bin
source /etc/profile
perf-map-agent
- 下载
sudo yum install git -y cd /home/q/flame sudo git clone --depth=1 https://github.com/jrudolph/perf-map-agent - 编译:cmake .
- 编译:make
- check输出:out/attach-main.jar
FlameGraph FlameGraph 用于生成最终需要的svg的图片. cd目录:/home/q/flame/ 下载地址:git clone --depth=1 https://github.com/brendangregg/FlameGraph
3.使用步骤
- tomcat 业务工程的startenv.sh 加入:
-XX:+PreserveFramePointer, 重启tomcat - 一分钟采样结果, 时间可以自由设置
cd /tmp && sudo perf record -F 99 -a -g -- sleep 60(注意,g后面是两个短横线) 输出:/tmp/perf.data - perf-map输出对应进程10031 的采样数据.
cd /home/q/flame/perf-map-agent/out && sudo -utomcat java -cp attach-main.jar:$JAVA_HOME/lib/tools.jar net.virtualvoid.perf.AttachOnce 10031 - 设置权限
sudo chown root /tmp/perf-*.map - FlameGraph输出svg的结果
输出:/tmp/flamegraph.svgcd /home/q/flame/FlameGraph sudo rm perf* && sudo cp /tmp/perf* . sudo perf script | ./stackcollapse-perf.pl | ./flamegraph.pl --color=java --hash > /tmp/flamegraph.svg - sz /tmp/flamegraph.svg, 使用浏览器打开,即可以看到.
4.举例
# 1.生成jstack采样文件
for i in {1..100} ;do sudo -u tomcat /home/q/java/default/bin/jstack 17815 >> rataplantask.jstk; sleep 0.1; done
## 2.成火焰图
cat ~/rataplantask.jstk|./stackcollapse-jstack.pl| ./flamegraph.pl --color=green > rateplan.svg