在OR项目中使用火焰图
火焰圖介紹
看到openresty里用火焰圖覺得挺有意思的,又裝逼又有用。它可以快速的定位到程序性能的瓶頸,生成程序的調用棧并且計算調用棧中每部分的 CPU 消耗,能夠比較容易的找到CPU占用高、內存泄漏等問題。今天在自己以前的項目中測試了下,下面貼個圖留個紀念。
這里面不要看顏色,因為顏色是隨機搞來的,沒有任何意義。要看火焰山上縱向的高度和每個對應的長度。縱向的高度代表函數調用棧的深度,橫向長度代表此函數執行占用CPU的比例。
下面來了解下火焰圖工具如何安裝。
火焰圖安裝
參考 http://kernelmaker.github.io/...
安裝systemtap
其實主要就是安裝內核探測工具 systemtap。(SystemTap 通過將腳本語句翻譯成C語句,編譯成內核模塊。模塊加載之后,依據時間處理機制來收集有關正在運行的Linux系統的信息)
1. yum install yum-utils2. yum install kernel-devel3. debuginfo-install kernel4. yum install systemtap第三步安裝失敗的話,使用內核版本號找到對應的包進行安裝就好了。
完成后輸入以下命令進行測試
如果安裝成功則是這樣
下載 openresty-systemtap-toolkit
要知道systemtap只是個內核探測工具,不只是可以用在openresty中的,你得自己寫好腳本來進行埋點等工作。但是春哥已經在 openresty-systemtap-toolkit 中提供了許多可以直接使用的腳本,我們直接拿過來用就好了,畢竟我自己是不會寫的。
下載 FlameGraph
使用上面openresty-systemtap-toolkit這些腳本后,我們其實已經可以拿到我們所需要的信息了,只是還是不夠直觀,所以我們得用FlameGraph火焰圖生成工具來生成直觀的圖片。
使用示例
1.找到我們要監控的nginx的某個進程
ps -ef | grep nginx
2.ngx-sample-lua-bt 抓取棧信息(這個工具可以看到在某個文件對應行函數的情況)
此處我是把上面下載的openresty-systemtap-toolkit和FlameGraph加到環境變量里面去了。所以直接輸入命令就行了
3.使用fix-lua-bt把上面得到的文件轉化更友好點(直接看到對應的lua函數)
fix-lua-bt temp.bt > a.bt4.使用下面兩個FlameGraph中的命令將文件轉化為svg圖片
stackcollapse-stap.pl a.bt > a.cbt flamegraph.pl a.cbt > a.svg然后打開a.svg就可以看到火焰圖了
總結
以上是生活随笔為你收集整理的在OR项目中使用火焰图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Double 与 Float 的值的比較
- 下一篇: 可心耳语-属于网络工程师的人声电台(第一