Golang での pprof ツールの誤動作
pprof ツールは以前は効果的に機能していたにもかかわらず、突然機能が低下し、プロファイリングのターゲットに関係なく誤った出力を生成しました。この問題は CPU とメモリプロファイリングの両方に影響し、プロファイリングされたアプリケーションの複雑さに比べて不釣り合いに不毛なコールグラフが生成されます。
影響を受ける Web アプリケーションは適切に実行されており、何百万ものリクエストを受信し、適切な応答を生成しています。この問題は、macOS Yosemite で数日前に突然表面化し、El Capitan にアップグレードした後も解決しませんでした。
問題のアプリケーションは、「github.com/davecheney/profile」パッケージをインポートし、メイン関数内でプロファイリングを開始します。 「defer profile.Start(profile.MemProfile).Stop()」を通じて。ただし、pprof ツールは、次のように呼び出すと誤動作するようです。
go tool pprof /var/folders/26/2sj70_sn72l_93j7tf6r07gr0000gn/T/profile614358295/mem.pprof
この呼び出しでは、プロファイリングされたバイナリが省略されます。これを解決するには、次のようにツールを呼び出す必要があります:
go tool pprof ./orig /var/folders/26/2sj70_sn72l_93j7tf6r07gr0000gn/T/profile614358295/mem.pprof
ここで、「orig」はプロファイリングを有効にしてビルドされたバイナリを表します。この変更により、pprof ツールは以前の機能に復元されます。
以上がpprof ツールが Golang アプリケーションに対して誤った出力を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。