java性能分析之火焰圖


原由

最近因為kafka、zookeeper、ES和相關的Java應用的內存問題搞的頭大,做運維將近4年,對Java調優、性能方面的知識了解的少之又少,是時候下定決心來對他多一個學習了。不能一口吃成一個胖子,每天學一點學一點。Brendan D. Gregg他真的是我膜拜膜拜又膜拜的偶像,他的博客里有很多很多的干貨,也一直還沒全面的學習,強烈推薦http://www.brendangregg.com/index.html。也是看了他的博客和相關書籍,里面的火焰圖看起來就很牛逼,於是就想着理論結合實踐動起來。
 

前言

這里先記錄怎么把火焰圖弄出來,具體的原理及其分析后續一點一點的磕,一點一點的補,具體的步驟入下。
 

結果

 

實現

1、安裝依賴包
yum -y install git
yum install gcc gcc-c++
yum install perf

 

2、安裝perf-map-agent
git clone --depth=1 https://github.com/jvm-profiling-tools/perf-map-agent
cd perf-map-agent
cmake . (這里記得系統需要有JAVA_HOME的環境變量,可以通過echo $JAVA_HOME看你的系統是否已經有了)
make

 

3、分析和生成火焰圖
git clone --depth=1 https://github.com/brendangregg/FlameGraph
perf record -F 49 -a -g -- sleep 30; ./FlameGraph/jmaps
perf script > out.stacks01
cat out.stacks01 | ./FlameGraph/stackcollapse-perf.pl | grep -v cpu_idle | ./FlameGraph/flamegraph.pl --color=java --hash > out.stacks01.svg

 

注:vim ./FlameGraph/jmaps 文件的AGENT_HOME要改成自己第二步安裝的目錄
 
 

相關鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM