サービスの CPU / メモリ使用率が高すぎる、またはリクエストの応答が遅い場合、どのコードに問題があるのかを知りたいと思ったら、pprof はそのために役立ちます。
- まず、pprof ライブラリを事前にインポートする必要があります。とても簡単で、サーバーコードに数行追加するだけです。
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe("localhost:8080", nil)
}()
// メインプロセス
}
- 下の画像の profile をクリックすると、30 秒間のデータが収集され、profile ファイルに保存されます。
その後、次のコマンドを実行します。
go tool pprof -http :8081 ./profile
http://localhost:8081/ui/
を開きます。
左上隅で伝説のフレームグラフ (Flame Graph) を選択できます: