ホームページ  >  記事  >  バックエンド開発  >  pprof ツールが Golang アプリケーションに対して誤った出力を生成するのはなぜですか?

pprof ツールが Golang アプリケーションに対して誤った出力を生成するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 13:11:29679ブラウズ

 Why is my pprof tool producing incorrect output for my Golang application?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。