...

パッケージ pprof

import "net/http/pprof"
概要
目次

概要 ▾

pprof パッケージは,pprof 視覚化ツールのフォーマットで HTTP サーバ ランタイムプロファイルデータを提供します。

パッケージは通常, HTTP ハンドラを登録するという副作用のためにのみインポートされます。 処理されるパスはすべて /debug/pprof/ で始まります。

pprof を使うには,このパッケージを以下のように自分のプログラムにリンクさせてください。

import _ "net/http/pprof"

アプリケーションがまだ HTTP サーバーを実行していない場合は,開始する必要があります。 インポートに "net/http" と "log" を追加し,メイン関数に次のコードを追加します。

go func() {
	log.Println(http.ListenAndServe("localhost:6060", nil))
}()

次に, pprof ツールを使用してヒーププロファイルを調べます。

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

あるいは, 30 秒の CPU プロファイルを見ます。

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

プログラムで runtime.SetBlockProfileRate を呼び出した後に,ゴルーチンブロッキングプロファイルを調べるには,次のようにします。

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

または 5 秒間の実行トレースを収集するには以下のようにします。

wget http://localhost:6060/debug/pprof/trace?seconds=5

プログラムで runtime.SetMutexProfileFraction を呼び出した後で,競合しているミューテックスの所有者を調べるには,次のようにします。

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

利用可能なすべてのプロファイルを表示するには,ブラウザで http://localhost:6060/debug/pprof/ を開きます。

稼働中の実例については,次の Web サイトをご覧ください。

https://blog.golang.org/2011/06/profiling-go-programs.html

func Cmdline

func Cmdline(w http.ResponseWriter, r *http.Request)

Cmdline は, NUL バイトで区切られた引数で,実行中のプログラムのコマンドラインでレスポンスします。 パッケージ初期化は /debug/pprof/cmdline としてそれを登録します。

func Handler

func Handler(name string) http.Handler

Handler は,名前付きプロファイルを提供する HTTP ハンドラを返します。

func Index

func Index(w http.ResponseWriter, r *http.Request)

Index は,リクエストによって指定された pprof 形式のプロファイルでレスポンスします。 たとえば, "/debug/pprof/heap" は "heap" プロファイルを提供します。 Index は "/debug/pprof/" のリクエストにレスポンスして,利用可能なプロファイルをリストした HTML ページを表示します。

func Profile

func Profile(w http.ResponseWriter, r *http.Request)

Profile は pprof 形式の cpu プロファイルでレスポンスします。 プロファイリングは, seconds GET パラメータで指定された期間,または指定されていない場合は 30 秒間継続します。 パッケージ初期化は /debug/pprof/profileとしてそれを登録します。

func Symbol

func Symbol(w http.ResponseWriter, r *http.Request)

Symbol はリクエストにリストされているプログラムカウンタを調べ,プログラムカウンタを関数名にマッピングするテーブルでレスポンスします。 パッケージの初期化時に /debug/pprof/symbol として登録されます。

func Trace 1.5

func Trace(w http.ResponseWriter, r *http.Request)

Trace はバイナリ形式の実行トレースでレスポンスします。 トレースは seconds GET パラメーターで指定された期間,または指定されていない場合は 1 秒間継続します。 パッケージ初期化は /debug/pprof/trace としてそれを登録します。