golang の次のチュートリアル コラムでは、golang の pprof パッケージを使用してプログラムのパフォーマンス分析を実行する方法を紹介します。
1. まず導入ですが、次の 2 か所で導入できます:
“net/http/pprof” "runtime/prof"このうち、"net/http/pprof" は "runtime/pprof" とパッケージ化されており、 httpポートが公開されているので、ブラウザ上でプログラムのパフォーマンス解析を閲覧できるようになります。 "runtime/pprof" は *.pprof ファイルを生成し、このファイルに基づいてパフォーマンス分析を実行できます。
2. 次に、コード内で pprof を使用します。 実際のアプリケーションには 3 つの状況があります:
1)
プログラム自体が Web サーバーの場合は、コード
import( _"net/http/pprof" )を通じて pprof を導入するだけで済み、ブラウザで http://localhost:port/debug/pprof/ にアクセスします。 CPU 使用率やメモリ使用率などを含む、Web サービスの現在のステータス。
2)
Go プログラムが Web サーバーではなく、サービス プロセスである場合は、ゴルーチンを開く必要があります。ポートリスニングを有効にします。
例:
go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) }()同様に http://localhost:6060/debug/pprof にアクセスして、プログラムの実行情報を表示します。
3) プログラムが単なるアプリケーションの場合は、「runtime/ppprof」パッケージを使用する必要があります。
公式 Web サイトで提供されているコードは次のようなものです:
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file") func main() { flag.Parse() if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() }そして、このプログラムを実行するときに、パラメーター --cpuprofile=*.prof を追加して、対応するファイルにパラメーターを生成します。 .pprof ファイルとプログラムの実行情報はすべてこのファイル内にあります。次に、対応するディレクトリに入り、コマンド go tool pprof を実行します。生成された pprof ファイルのコマンドを追加して pprof に入り、Web コマンドを入力して、対応する svg ファイルを生成します。 2 番目の方法:
「net/http/pprof」パッケージを使用する場合は、go tools pprof コマンドを使用してプログラムの実行ステータスを表示することもできます。たとえば、単純な go サーバー プログラムを起動し、ポート 8080 をリッスンする場合、次のコマンドを使用して pprof コマンド ラインを入力できます:
このコマンドを使用してスタック情報を表示します:
go tool pprof http://localhost:6060/debug/pprof/heap 利用这个命令可以查看程序CPU使用情况信息: go tool pprof http://localhost:6060/debug/pprof/profile 使用这个命令可以查看block信息: go tool pprof http://localhost:6060/debug/pprof/block 进入pprof命令行,输入help,查看命令帮助, topN命令可以查看占用前N 的线程或者函数,用svg可以生成svg图。 pprof简单使用就是这样了,掌握了使用方法,在实践中加以利用才是我们的目的,希望我写的这些可以对你有所帮助。ps ; なぜなら、私は実際に golang で大規模なプログラムを書いたことも、このパッケージを実際に使用したこともなく、いくつかの記事を読んで公式 Web サイトの情報をまとめただけなので、形而上学的な間違いを犯すことは避けられません。修正は大歓迎です!ありがとう######
以上がgolang の pprof パッケージを使用してプログラムのパフォーマンス分析を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。