基本使用
檢視堆疊呼叫資訊
$ 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 協議》,轉載必須註明作者和本文連結