golang 效能分析工具Pprof

2021-08-21 13:13:10 字數 1706 閱讀 9406

pprof是golang程式乙個效能分析的工具,可以檢視堆疊、cpu資訊等

pprof有2個包:net/http/pprof以及runtime/pprof

二者的關係

net/http/pprof包只是使用runtime/pprof包來進行封裝了一下,並在http埠上暴露出來。

假如你的go呈現是用http包啟動的web伺服器,當你想要檢視web伺服器的狀態時,選擇【net/http/pprof】,使用方法如下:

)檢視結果:通過訪問http://domain:port/debug/pprof 檢視當前web服務的狀態。

如果你go程式是乙個服務程序,同樣可以選擇【net/http/pprof】包,然後開啟另外乙個goroutine來開啟埠監聽。

//遠端獲取pprof資料

gofunc() ()

如果你的go程式只是乙個應用程式,比如計算fabonacci數列,那麼你就不能使用net/http/pprof包了,你就需要使用到runtime/pprof。具體做法就是用到pprof.startcpuprofile和pprof.stopcpuprofile。比如下面的例子:

10mins, 在程式退出之前可以檢視效能引數.

time.sleep(60 * time.second)

}編譯執行:go run test.go

1、通過網頁檢視overview:http://localhost:8080/debug/pprof/

2、通過命令列檢視

檢視堆疊資訊:go tool pprof http://localhost:8080/debug/pprof/heap

進入到pprof:

top10命令 檢視了堆疊空間最大的10個函式呼叫

web命令 則生成了很詳細的圖

檢視cpu效能資訊:go tool pprof http://localhost:8080/debug/pprof/profile

進入到pprof:

web命令 則生成了很詳細的圖

golang 效能分析 2

總覽 執行緒數量,阻塞呼叫,記憶體分析 協程分析等 pprof cpu和記憶體分析說明 一般採集cpu樣板資料 這裡我只寫一種,至於其他的記憶體和trace採集,可以參考 此文章介紹了各種採集樣板資料原理,以及展示方式 import runtime pprof log func main defer...

golang 效能分析 pprof

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

golang除錯效能分析

golang程式的cpu及記憶體使用情況效能分析 1.runtime.memstats檢視記憶體占用情況 讀取當前記憶體資訊的方法 func printmemstats func test log.println loop end.func main 主線程 睡眠等待 alloc golang語言框...