摘要:火焰圖介紹看到里用火焰圖覺得挺有意思的,又裝逼又有用。今天在自己以前的項(xiàng)目中測試了下,下面貼個(gè)圖留個(gè)紀(jì)念。火焰圖安裝參考安裝其實(shí)主要就是安裝內(nèi)核探測工具。
火焰圖介紹
看到openresty里用火焰圖覺得挺有意思的,又裝逼又有用。它可以快速的定位到程序性能的瓶頸,生成程序的調(diào)用棧并且計(jì)算調(diào)用棧中每部分的 CPU 消耗,能夠比較容易的找到CPU占用高、內(nèi)存泄漏等問題。今天在自己以前的項(xiàng)目中測試了下,下面貼個(gè)圖留個(gè)紀(jì)念。
這里面不要看顏色,因?yàn)轭伾请S機(jī)搞來的,沒有任何意義。要看火焰山上縱向的高度和每個(gè)對應(yīng)的長度??v向的高度代表函數(shù)調(diào)用棧的深度,橫向長度代表此函數(shù)執(zhí)行占用CPU的比例。
下面來了解下火焰圖工具如何安裝。
火焰圖安裝參考 http://kernelmaker.github.io/...
安裝systemtap其實(shí)主要就是安裝內(nèi)核探測工具 systemtap。(SystemTap 通過將腳本語句翻譯成C語句,編譯成內(nèi)核模塊。模塊加載之后,依據(jù)時(shí)間處理機(jī)制來收集有關(guān)正在運(yùn)行的Linux系統(tǒng)的信息)
1. yum install yum-utils 2. yum install kernel-devel 3. debuginfo-install kernel 4. yum install systemtap
第三步安裝失敗的話,使用內(nèi)核版本號找到對應(yīng)的包進(jìn)行安裝就好了。
完成后輸入以下命令進(jìn)行測試
stap -ve "probe begin { log("hello world") exit() }"
如果安裝成功則是這樣
要知道systemtap只是個(gè)內(nèi)核探測工具,不只是可以用在openresty中的,你得自己寫好腳本來進(jìn)行埋點(diǎn)等工作。但是春哥已經(jīng)在 openresty-systemtap-toolkit 中提供了許多可以直接使用的腳本,我們直接拿過來用就好了,畢竟我自己是不會寫的。
下載 FlameGraph使用上面openresty-systemtap-toolkit這些腳本后,我們其實(shí)已經(jīng)可以拿到我們所需要的信息了,只是還是不夠直觀,所以我們得用FlameGraph火焰圖生成工具來生成直觀的圖片。
使用示例1.找到我們要監(jiān)控的nginx的某個(gè)進(jìn)程
ps -ef | grep nginx
2.ngx-sample-lua-bt 抓取棧信息(這個(gè)工具可以看到在某個(gè)文件對應(yīng)行函數(shù)的情況)
此處我是把上面下載的openresty-systemtap-toolkit和FlameGraph加到環(huán)境變量里面去了。所以直接輸入命令就行了
ngx-sample-lua-bt -p 19075 --luajit20 -t 5 > temp.bt
3.使用fix-lua-bt把上面得到的文件轉(zhuǎn)化更友好點(diǎn)(直接看到對應(yīng)的lua函數(shù))
fix-lua-bt temp.bt > a.bt
4.使用下面兩個(gè)FlameGraph中的命令將文件轉(zhuǎn)化為svg圖片
stackcollapse-stap.pl a.bt > a.cbt flamegraph.pl a.cbt > a.svg
然后打開a.svg就可以看到火焰圖了
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39561.html
摘要:開源項(xiàng)目是一個(gè)的低開銷采樣分析器,可以生成火焰圖。集成了它的功能,使用起來更加的簡單。開啟火焰圖按下快捷鍵選擇勾選這就開啟了火焰圖功能。啟動(dòng)程序隨便寫一點(diǎn)代碼使用下圖中紅色標(biāo)注的方式啟動(dòng)火焰圖黃色的部分是調(diào)用棧,其他的則是系統(tǒng)調(diào)用。 開源項(xiàng)目 async-profiler 是一個(gè)Java 的低開銷采樣分析器,可以生成火焰圖。idea集成了它的功能,使用起來更加的簡單。 開啟火焰圖 按...
摘要:本文是關(guān)于我如何應(yīng)用基本性能分析技術(shù),借助火焰圖做了一處小改進(jìn),使得我們計(jì)算機(jī)集群的狀況獲得了倍的改善,并在第二年幫助節(jié)省了幾百萬刀。最終,通過對平均大小在的事件進(jìn)行批量插入,我們的吞吐量獲得了的提高。 本文是關(guān)于我如何應(yīng)用基本性能分析技術(shù),借助火焰圖做了一處小改進(jìn),使得我們 Postgres 計(jì)算機(jī)集群的 CPU 狀況獲得了 10 倍的改善,并在第二年幫助 Heap 節(jié)省了幾百萬刀。針對用...
摘要:本文翻譯自原文地址中文標(biāo)題保持的速度創(chuàng)建高性能的工具技術(shù)和提示快速摘要是一個(gè)非常多彩的平臺,而創(chuàng)建服務(wù)就是其非常重要的能力之一。在目錄下,我們執(zhí)行譯者注現(xiàn)在的話可以使用新的形式的命令語法會在剖析完畢后,創(chuàng)建文件并自動(dòng)打開瀏覽器。 pre-tips 本文翻譯自: Keeping Node.js Fast: Tools, Techniques, And Tips For Making Hi...
閱讀 3942·2021-11-24 09:38
閱讀 3135·2021-11-17 09:33
閱讀 3902·2021-11-10 11:48
閱讀 1270·2021-10-14 09:48
閱讀 3156·2019-08-30 13:14
閱讀 2576·2019-08-29 18:37
閱讀 3425·2019-08-29 12:38
閱讀 1442·2019-08-29 12:30