火焰圖(flame graph)是性能分析的利器。這里接單介紹一下在Linux環境生成火焰圖,至於如何讀懂火焰圖,可以參考大佬博客。
http://www.ruanyifeng.com/blog/2017/09/flame-graph.html
perf命令
Linux 系統原生提供的性能分析工具,會返回 CPU 正在執行的函數名以及調用棧(stack),如果使用的環境中沒有這個命令,首先要安裝。
yum -y install perf
數據采樣
perf record -F 99 -p <pid> -g -- sleep 30
pid表示需要采樣的進程id,如果是Java進程可以使用jps等命令獲取進程id,perf record表示記錄,-F 99表示每秒99次,-g表示記錄調用棧,sleep 30則是持續30秒
解析數據
使用perf script工具對perf.data進行解析
perf script -i perf.data &> perf.unfold
生成火焰圖
需要用到一個工具,項目地址:https://github.com/brendangregg/FlameGraph,如果下載過慢,點擊這里下載。
./stackcollapse-perf.pl perf.unfold > perf.folded //生成折疊后的調用棧
./flamegraph.pl perf.folded > out.svg //生成火焰圖
下載svg文件,然后通過火焰圖分析CPU,至於如何讀懂火焰圖,就要回到文章開始的鏈接了。😄
來一張效果圖:
注:如果提示沒有xxx.pl命令或者,perf命令不能執行,注意切換到管理員權限,授權可執行權限,再次嘗試。