pprof 使用

Codcodog發表於2021-03-04

基本使用

檢視堆疊呼叫資訊

$ go tool pprof http://localhost:6060/debug/pprof/heap

檢視協程資訊

$ go tool pprof http://localhost:6060/debug/pprof/goroutine

檢視30s內的 CPU 資訊

$ go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30

其他

$ go tool pprof http://localhost:6060/debug/pprof/threadcreate

$ go tool pprof http://localhost:6060/debug/pprof/block

$ go tool pprof http://localhost:6060/debug/pprof/mutex

$ go tool pprof http://localhost:6060/debug/pprof/trace?seconds=5

擴充套件使用

排查 golang 程式記憶體洩露.

獲取 A 時間點的堆疊 profile

$ curl -s http://localhost:6060/debug/pprof/heap > A.heap

過一段時間後,記憶體開始洩露了,再獲取 B 時間點的堆疊 profile

$ curl -s http://localhost:6060/debug/pprof/heap > B.heap

比較 A, B 時間點的堆疊差異

$ go tool pprof --base A.heap B.heap

使用 web 命令生成一個 SVG 檔案

(pprof) web

或者直接開啟 web 介面

$ go tool pprof --http :9090 --base B.heap A.heap

生成圖表,需要安裝 Graphviz

參考

Profiling Go programs with pprof
Hi, 使用多年的go pprof檢查記憶體洩漏的方法居然是錯的

如果覺得不錯,可以給我一個 STAR.

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章