golang學習筆記 pprof效能分析2

2021-09-19 05:52:02 字數 2667 閱讀 4201

golang自帶非常強大的效能分析工具,它可以在go程式的執行中以精緻的細節顯示所有執行時事件,今天我們就了解一下go tool trace的強大之處。

go tool trace 顯示了非常之多的資訊,為了簡單起見,我們先概括的看一下他顯示了些什麼,下面是我生成的所有trace目錄,具體的如圖上所示,我們逐個分析。

開啟乙個view trace,過程可能需要一點時間,稍作等待,開啟之後看到的畫面如下,包含一些註解:

heap:檢視堆的使用情況,可以檢視任何時刻的堆情況。下一次gc的時間,當前使用的記憶體情況。如下:

threads:當前的執行緒使用情況,如下圖:

proc x:當前「核」的groutines執**況(具體內容還沒看懂什麼鬼

最右側的統計資訊:

開啟goroutine analysis看到的所有的goroutines和對應所在的模組,n表示當前模組(函式)啟動的goroutines的數目,如下圖:

隨機點開乙個,cmpserver/mykafka.(*myproducer).run檢視具體的資訊:

3~8不逐個展開(還不明白流程圖具體代表的什麼意思)

曾今對go自帶的效能分析工具pprof簡單做了一些記錄,文章詳見 pprof效能分析1 和 pprof效能分析2 ,pprof產生的效能報告確實能夠比較直觀的看出來存在效能瓶頸的地方,但是對於比較大的服務來說,錯綜複雜的粗細線條明顯能夠混亂分析者的視線,這時候go-torch變體現出了他的優勢。

上述一、章節中引入的pprof包是對golang自帶的效能工具pprof的簡單封裝,通過監聽本地的6060埠,生產pprof的效能檔案同時也響應go-torch的指令。

1)安裝go-torch工具

2)安裝brandangregg的火焰圖生產工具

git clone [email protected]:brendangregg/flamegraph.git,安裝完成生成工具之後,將flamegraph.h所在的目錄加入到環境變數中

用postman或者web頁面向服務傳送http://localhost:6060/start開始採集pprof效能資料,傳送http://localhost:6060/stop停止採集pprof效能資料。在另乙個shell終端上輸入go-torch -u http://localhost:6060 --seconds 60 -f cpu.svg表示開始採集cpu的效能火焰圖且持續60s的時間,到達採集結束時間後生成cpu.svg的火焰圖,改檔案用現代瀏覽器開啟即可檢視,如下:

說明:[go 大殺器之跟蹤剖析 trace]

[an-introduction-to-go-tool]

[garbage collection in go]

golang 效能分析 pprof

如果是使用了http包的路由,則只需要import net http pprof 即可 mutex mutex導致爭用的goroutine堆疊 總的分析思路就是通過top和traces找出關鍵函式,再通過list檢視函式 找到關鍵 行並確認優化方案 top檢視占用最高的num項 traces列印匹配...

golang 效能分析工具Pprof

pprof是golang程式乙個效能分析的工具,可以檢視堆疊 cpu資訊等 pprof有2個包 net http pprof以及runtime pprof 二者的關係 net http pprof包只是使用runtime pprof包來進行封裝了一下,並在http埠上暴露出來。假如你的go呈現是用h...

golang工具 二 PProf效能剖析

應用程式在執行時,總是會出現一些你意想不到的問題,例如 cpu使用率過高,記憶體不斷增大 疑似記憶體洩露 或者是goroutine數量不斷增加 goroutine洩露 那麼在這些問題出現時如何進行排查呢,這裡介紹pprof工具。pprof是什麼 pprof是析效能分析資料的工具,可以生成視覺化的文字...