【GO】 32.pprof

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 のブログ

golang pprof 実践ガイド - プログラマーが求めた

Golangのpprofとフレームグラフ実戦 | wish

おすすめ

転載: blog.csdn.net/chen_peng7/article/details/131281117