Golang は、高性能の同時コンパイル言語です。高性能アプリケーションを作成する場合、パフォーマンス分析は非常に重要です。 Golang は初期設計でこれを考慮していましたが、実際の運用環境では、パフォーマンス分析のために依然としていくつかのツールが必要です。非常に重要なツールの 1 つは pprof です。
pprof の正式名はパフォーマンス プロファイリングで、Golang に組み込まれたパフォーマンス分析ツールです。 pprof は、開発者がプログラムの実行時に CPU 使用率、メモリ使用率などを分析し、プログラムのパフォーマンスのボトルネックを見つけるのに役立ちます。
pprof はサンプリングに基づいて動作します。 pprof は、アプリケーションの実行中に CPU 使用率、メモリ使用量、その他のデータを定期的に収集し、サンプリング ファイル (.prof ファイル) を生成します。ユーザーはこのファイルを使用してプログラムのパフォーマンスを分析できます。
pprof を使用するには、プログラム コードに特定のコード スニペットを追加する必要があります。これらのコード スニペットは、プログラムの実行時にいくつかの重要な情報を取得し、この情報をサンプル ファイルに書き込みます。プログラムの実行後、標準の go ツール pprof ツールを使用してサンプル ファイルを分析できます。
以下は基本的な使用例です:
import ( "net/http" _ "net/http/pprof" ) func main() { go func() { http.ListenAndServe("localhost:6060", nil) }() // 代码片段 }
上記のコードでは、net/http/pprof パッケージをインポートし、pprof からのリクエストを監視するために main 関数で HTTP サーバーを起動しました。次に、プログラム内の重要な場所にいくつかのコード スニペットを挿入します。これらのコード スニペットは、プログラムの CPU 使用率、スタック情報などをキャプチャし、この情報をサンプル ファイルに書き込みます。
プログラムの実行が終了したら、次のコマンドを使用して pprof ツールを起動できます。
go tool pprof [binary] [profile]
ここで、[binary] は分析する必要があるバイナリ ファイル、[profile] はサンプリング ファイルへのパス。 pprof ツールを開始した後、top
、web
、list
などのコマンドを使用して、サンプリング ファイル内の情報を表示できます。
top
このコマンドは、プログラムの CPU 使用率とメモリ使用率を表示し、CPU 使用率で並べ替えることができます。
(pprof) top Showing nodes accounting for 1030ms, 100% of 1030ms total Dropped 105 nodes (cum <= 5.15ms) Showing top 10 nodes out of 21 flat flat% sum% cum cum% 990ms 96.12% 96.12% 990ms 96.12% main.(*myStruct).doWork 20ms 1.94% 98.06% 20ms 1.94% time.Sleep 20ms 1.94% 100.00% 20ms 1.94% fmt.(*buffer).write 0 0% 100.00% 1030ms 100% runtime.main 0 0% 100.00% 1030ms 100% runtime.main.func1 0 0% 100.00% 1030ms 100% runtime.mstart 0 0% 100.00% 1030ms 100% runtime.mstart1 0 0% 100.00% 1030ms 100% runtime.systemstack 0 0% 100.00% 990ms 95.63% main.work 0 0% 100.00% 20ms 1.94% fmt.Fprintf
web
コマンドプログラムのパフォーマンスのボトルネックをより直観的に表示する対話型 Web インターフェイスを生成できます。
(pprof) web
list
コマンドは、関数の詳細情報を表示し、関数のソース コードと CPU 使用率を表示できます。 :
(pprof) list myStruct.doWork Total: 1.03s ROUTINE ======================== main.(*myStruct).doWork in /path/to/main.go 990ms 990ms (flat, cum) 96.12% of Total 0 10ms 0.00% runtime.newstack 0 10ms 0.00% runtime.procresize 0 10ms 0.00% runtime.systemstack ...
pprof は、開発者がアプリケーションのパフォーマンスのボトルネックを迅速に見つけて最適化するのに役立つ、非常に実用的なパフォーマンス分析ツールです。 pprof は、高パフォーマンスのアプリケーションを作成する場合に不可欠なツールです。
以上がgolang pprof の意味の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。