Go ツールの pprof の失敗: プロファイリング ターゲットに関係なく一貫した出力の欠陥
これまで Go アプリケーションのパフォーマンス プロファイリングで信頼性が高かった pprof ツールは、対象のアプリケーションに関係なく、一貫して壊れた不毛な出力が生成されるという問題が発生しています。この問題は、Web アプリケーションを含むさまざまなアプリケーションに影響を及ぼし、オペレーティング システムのアップグレード後も問題が解決しませんでした。
注目すべき例の 1 つは、詳細な呼び出しグラフを生成したり、最上位の関数呼び出しのリストを提供したりする代わりに、pprof が出力を生成することです。次のようなものです:
269.97kB of 269.97kB total ( 100%) flat flat% sum% cum cum% 269.97kB 100% 100% 269.97kB 100%
プロファイルを生成するために、開発者は Go v1.5.1 で「github.com/davecheney/profile」パッケージを使用しました。プロファイリング プロセスの概要は次のとおりです。
通常、コマンド ラインは次のようになります。 「メモリ プロファイリングが有効です」というメッセージと、その後にプロファイル ファイルへのパス (例: /var/folders/.../mem.pprof) が表示されます。
コードが意図したとおりに実行される間、pprof出力ファイル (/path/to/profile.pprof) の分析では、トラブルシューティングに必要な情報が不十分です。
解決策:
問題は、pprof の呼び出しにあります。ユーザーが go ツール pprof を呼び出すときに、誤ってバイナリ名を省略しました。この問題を解決するには、プロファイル ファイル パスとともにバイナリを指定することが重要です。
go tool pprof ./binary_name /path/to/profile.pprof
この変更により、pprof は目的のバイナリを確実に分析し、期待される詳細なパフォーマンス分析出力が得られます。
以上がアプリケーションをプロファイリングしているときでも、Go ツールの pprof 出力が空白になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。