1. プロジェクトを開始してインデックス ページにアクセスするための参照を追加します
1.1 メインプログラムに pprof 参照を追加し、Web ページを開始します。
"net/http"
_ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe(":6060", nil))
}()
1.2 pprof ページにアクセスする
http://127.0.0.1:6060/debug/pprof/
- allocs: 過去のすべてのメモリ割り当てのサンプルを表示します。
- block: ブロッキング同期の原因となったスタック トレースを表示します。
- cmdline: 現在のプログラムのコマンド ラインの完全な呼び出しパス。
- goroutines: 現在実行中のすべての goroutines のスタック トレースを表示します。
- heap: アクティブなオブジェクトのメモリ割り当てを表示します。
- mutex: ミューテックスにつながる競合するホルダーのスタック トレースを表示します。
- profile: デフォルトでは、CPU プロファイリングが 30 秒間実行され、分析用のプロファイル ファイルが取得されます。
- threadcreate: 新しい OS スレッドを作成するためのスタック トレースを表示します。
- トレース:mp.weixin.qq.com/s/I9xSMxy32…
デフォルトでは、ブロックとミューテックスの情報は追跡されないことに注意してください。これら 2 つの情報を確認したい場合は、コードに 2 行を追加する必要があります。
runtime.SetBlockProfileRate(1) // 开启对阻塞操作的跟踪,block
runtime.SetMutexProfileFraction(1) // 开启对锁调用的跟踪,mutex
1.3 コマンドによる問い合わせ
このコマンドは、Web ページの allocs 情報をローカルにダウンロードし、pprof プロセスに入力します。コマンドを通じて特定の情報を表示できます。
go tool pprof http://localhost:6060/debug/pprof/allocs
に保存されたプロファイルは、ダウンロードのローカルの場所を確認できます
上
最もリソースを消費するレコード 10 件を表示する
top20 top30 topN、N個まで表示
1.4 CPUの状態を確認する
go tool pprof http://localhost:6060/debug/pprof/profile
おそらくプログラムが動作していないのでデータがありません
2.写真を見てください
2.1 画像を見るには、まずgraphvizをインストールする必要があります。
mac は brew installgraphviz を使用します
brew install graphviz
2.2 ゴルーチンを表示する
web コマンドを使用すると、デフォルトのブラウザで svg ファイルが開きます。
go tool pprof http://localhost:6060/debug/pprof/goroutine
web
2.3 新しいページ
次のコマンドを入力すると、デフォルトのブラウザでページが開き、アイコンの種類を選択できます
go tool pprof -http=:8000 http://127.0.0.1:6060/debug/pprof/goroutine
参考:
Golang pprof の動作 | Wolfogre のブログ