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

  1. g++, gcc, make.

    sudo yum install gcc -y && sudo yum install gcc-c++ -y
    sudo yum install make -y
    
  2. cmake 公司环境提供的 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

  1. 下载
    sudo yum install git -y
    cd /home/q/flame
    sudo git clone --depth=1 https://github.com/jrudolph/perf-map-agent
    
  2. 编译:cmake .
  3. 编译:make
  4. check输出:out/attach-main.jar

FlameGraph FlameGraph 用于生成最终需要的svg的图片. cd目录:/home/q/flame/ 下载地址:git clone --depth=1 https://github.com/brendangregg/FlameGraph

3.使用步骤

  1. tomcat 业务工程的startenv.sh 加入:-XX:+PreserveFramePointer , 重启tomcat
  2. 一分钟采样结果, 时间可以自由设置 cd /tmp && sudo perf record -F 99 -a -g -- sleep 60 (注意,g后面是两个短横线) 输出:/tmp/perf.data
  3. 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
    
  4. 设置权限 sudo chown root /tmp/perf-*.map
  5. FlameGraph输出svg的结果
    cd /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
    
    输出:/tmp/flamegraph.svg
  6. 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

results matching ""

    No results matching ""