安裝systemtap生成openresty的火焰圖

SystemTap

簡單介紹

  • systemtap是一個診斷l(xiāng)inux系統(tǒng)性能和功能問題的開源軟件尔觉,并且允許開發(fā)人員編寫和重用簡單的腳本深入探查linux系統(tǒng)的活動设易,可以快速安全的提取過濾總結(jié)數(shù)據(jù),以便能夠診斷復(fù)雜的性能或功能問題澎灸。
  • 基本思想是name events(命名事件)院塞,并給它們處理程序。每當(dāng)事件發(fā)生的時候性昭,linux內(nèi)核運(yùn)行處理程序拦止,就像一個子程序一樣,之后恢復(fù)糜颠。處理程序是一系列的腳本語言汹族,用于指定事件完成時要完成的工作,這種工作通常包括是提取數(shù)據(jù)其兴,打印結(jié)果等顶瞒。
  • systemtap通過將腳本裝換成C,運(yùn)行系統(tǒng)的時候創(chuàng)建一個內(nèi)核模塊元旬,當(dāng)模塊加在的時候榴徐,它通過掛載到內(nèi)核的鉤子來激活所有的探測事件守问。最后,這次事件結(jié)束的時候箕速,掛載的鉤子斷開連接酪碘,移除模塊。

systemtap工具功能很強(qiáng)大盐茎,目前剛接觸兴垦,在此僅僅通過官網(wǎng)做一些簡單的介紹。

安裝

  • 環(huán)境 centos 7字柠,直接用yum install systemtap systemtap-runtime安裝探越,如果遇到依賴包的問題,安裝所需要的依賴就好了窑业;
  • 另外需要注意一個重要的問題是需要安裝kernel-debuginfo和kernel-debuginfo-common钦幔;可以直接用yum安裝也可以下載rpm包安裝;但是 ** 必須要和kernel版本一樣 **
  • 安裝完成后可以用stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'測試常柄,如果不出意外的話會正常輸出的

表示在這里被坑了好久鲤氢,全部安裝好后運(yùn)行的時候一直報錯,累西潘。卷玉。。

Openresty

介紹

  • OpenResty是一個動態(tài)的基于nginx和lua的網(wǎng)絡(luò)平臺喷市。把nginx和lua集成在一起相种,可以通過lua完成一些復(fù)雜的需求,而不用再去開發(fā)C層面的module了品姓,同時性能也很理想寝并。
  • 目前應(yīng)該直接集成LuaJIT了,簡單來說LuaJIT是lua的一個更高性能的版本腹备。

安裝

  • 直接到官網(wǎng)下載源碼進(jìn)行編譯安裝就行了衬潦,如果遇到一些依賴,就直接安裝依賴就行了植酥。

目前在做nginx的相關(guān)工作别渔,所以對openresty了解的比較多一點(diǎn),如有興趣惧互,歡迎共同交流。

火焰圖

介紹

  • 火焰圖(Flame Graphs)是一個通過可視話堆棧的方法喇伯,可以直觀的看出每個函數(shù)占用cpu的時間喊儡,內(nèi)存,off-cpu等等稻据,對于我們排查軟件問題很有幫助艾猜。
  • 顯示的是买喧,Y軸是堆棧的深度,X軸是樣本數(shù)量匆赃。每個樣本(函數(shù))是一個矩形淤毛。鼠標(biāo)點(diǎn)擊可以看到一些詳細(xì)的信息。通過這些可以看出那些需要調(diào)整優(yōu)化算柳。

對于火焰圖也是最近才了解到的低淡,有些解釋可能很牽強(qiáng),誤怪瞬项,后面會慢慢的了解學(xué)習(xí)的蔗蹋。

生成

  • openresty提供了一套完整的工具用于探測運(yùn)行的狀況〈蚜埽可以直接下載并根據(jù)介紹運(yùn)行猪杭。
  • 然后下載FlameGraph火焰圖生成工具,用于把前面采樣到的信息繪制成火焰圖妥衣。
  • 然后在瀏覽器中打開進(jìn)行觀察分析皂吮。

在采樣信息的時候需要讓nginx在壓力很大的情況下,這樣得出的結(jié)果才會有更大的參考性税手。

分析火焰圖

  • 采樣C層面的信息進(jìn)行分析
  1. sudo ./sample-bt -p 15507 -t 60 -u -a '-DMAXACTION=100000' > /tmp/nginx.bt

-p 表示nginx的worker的pid
-t 表示采樣時間
-u 表示在用戶空間
-a 傳遞一些參數(shù)蜂筹,因?yàn)槲易约旱臋C(jī)器的原因所以需要傳遞這個參數(shù),要不然會報錯的

  1. sudo ./stackcollapse-stap.pl /tmp/nginx.bt > /tmp/nginx.cbt
  2. sudo ./flamegraph.pl /tmp/nginx.cbt > /tmp/nginx.svg
  3. 用瀏覽器打開/tmp/nginx.svg
openresty C層面的火焰圖
openresty C層面的火焰圖

我用wrk給nginx的壓力還不是很大大概CPU才20%左右冈止,所以這個不是很準(zhǔn)確的狂票;但是也可以看出一些問題,比如看出在發(fā)送數(shù)據(jù)的時候還是有問題的熙暴,都在body_filter階段闺属,可能因?yàn)槲矣昧撕芏嗟腷uffer的原因

  • 采樣lua層面的信息進(jìn)行分析,在編譯luaJIT的時候需要添加CCDEBUG=-g參數(shù)
  1. sudo ./ngx-sample-lua-bt -a '-DMAXACTION=100000' -p 4790 --luajit20 -t 60 > /tmp/lua.bt

各個參數(shù)的意思和上面的一樣周霉。

  1. sudo ./fix-lua-bt /tmp/lua.bt > /tmp/lua-fix.bt
  2. sudo ./stackcollapse-stap.pl /tmp/lua-fix.bt > /tmp/lua-fix.cbt
  3. sudo ./flamegraph.pl /tmp/lua-fix.cbt > /tmp/lua-fix.svg
  4. 瀏覽器打開/tmp/lua-fix.svg
    圖的話在這里就不再貼出來了

后記

  • 上面用sample-bt生成的是on-cpu的相關(guān)數(shù)據(jù)掂器,也可以用sample-bt-off-cpu生成off-cpu的相關(guān)分析數(shù)據(jù),具體的區(qū)別可以到相關(guān)網(wǎng)站進(jìn)行詳細(xì)的了解俱箱;
  • 首先呢国瓮,這個火焰圖是一個很好的分析工具,相信可以為我們再排查問題的時候提供很大的幫助狞谱,目前我也是剛接觸這個工具乃摹,還在慢慢摸索學(xué)習(xí)當(dāng)中;
  • 另外一個就是在安裝遇到過很多的坑跟衅,也相當(dāng)無語孵睬,但是都通過google慢慢的一個一個解決了,要有一顆永不放棄的心不是嗎伶跷;

*** 如有疑問歡迎批評指正掰读,謝謝秘狞! ***

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蹈集,隨后出現(xiàn)的幾起案子烁试,更是在濱河造成了極大的恐慌,老刑警劉巖拢肆,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件减响,死亡現(xiàn)場離奇詭異,居然都是意外死亡善榛,警方通過查閱死者的電腦和手機(jī)辩蛋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來移盆,“玉大人悼院,你說我怎么就攤上這事≈溲” “怎么了据途?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長叙甸。 經(jīng)常有香客問我颖医,道長,這世上最難降的妖魔是什么裆蒸? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任熔萧,我火速辦了婚禮,結(jié)果婚禮上僚祷,老公的妹妹穿的比我還像新娘佛致。我一直安慰自己,他們只是感情好辙谜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布俺榆。 她就那樣靜靜地躺著,像睡著了一般装哆。 火紅的嫁衣襯著肌膚如雪罐脊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天蜕琴,我揣著相機(jī)與錄音萍桌,去河邊找鬼。 笑死凌简,一個胖子當(dāng)著我的面吹牛上炎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播号醉,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼反症,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了畔派?” 一聲冷哼從身側(cè)響起铅碍,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎线椰,沒想到半個月后胞谈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡憨愉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年烦绳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片配紫。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡径密,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出躺孝,到底是詐尸還是另有隱情享扔,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布植袍,位于F島的核電站惧眠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏于个。R本人自食惡果不足惜氛魁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厅篓。 院中可真熱鬧秀存,春花似錦、人聲如沸贷笛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乏苦。三九已至株扛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汇荐,已是汗流浹背洞就。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掀淘,地道東北人旬蟋。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像革娄,于是被迫代替她去往敵國和親倾贰。 傳聞我的和親對象是個殘疾皇子冕碟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容