Stackdriver Profiler について

本番環境システムのパフォーマンスを理解することは非常に困難です。テスト環境でパフォーマンスを測定しても、本番環境システムにかかる負荷を完全に再現することはできません。コードの一部に対してマイクロベンチマークが可能かもしれませんが、本番環境システムのワークロードと動作の再現は容易ではありません。

本番環境システムを継続的にプロファイリングすることで、稼働中のサービスで CPU サイクルやメモリなどのリソースがどのように消費されているのかを効果的に調べることができます。しかし、プロファイリングを行うと本番環境システムの負荷が増大します。この方法でリソースの消費パターンを見つけるには、プロファイリングで増加する負荷を小さくする必要があります。

Stackdriver Profiler は、本番環境のアプリケーションから CPU 使用率やメモリ割り当てなどの情報を継続的に収集する、オーバーヘッドの少ないプロファイラです。収集した情報から情報の生成元であるソースコードが特定されるので、最もリソースを消費しているコード部分を容易に識別できます。コードの特定が難しい場合でも、パフォーマンスの特徴を把握できます。

環境と言語

Stackdriver Profiler は、次の Google Cloud Platform 環境の Linux 上で動作します。

  • Compute Engine
  • Google Kubernetes Engine(GKE)
  • App Engine フレキシブル環境
  • App Engine スタンダード環境

Stackdriver Profiler は、次の言語で記述されたコードのプロファイリングを行います。

  • Go
  • Java
  • Node.js
  • Python

プロファイリング エージェントの実行方法については、プロファイリング エージェントをご覧ください。

Profiler がサポートしているプロファイリングの種類はプログラム言語によって異なります。次の表に、各言語でサポートされるプロファイルの種類を示します。

プロファイルの種類 Go1 Java Node.js Python
CPU 4
ヒープ 2
割り当てられたヒープ
競合
スレッド
経過時間 3 5

1 App Engine スタンダード環境では、Go 1.11 以降が必要です。
2 App Engine スタンダード環境でのみ利用可能です。
3 App Engine スタンダード環境では利用できません。
4 Python 3.2 以降でのみ利用可能です。
5 Python 3.6 以降でのみ利用可能です。

これらのプロファイルの種類の詳細については、プロファイリングのコンセプトをご覧ください。

パフォーマンスへの影響

Stackdriver Profiler は、1 つの Compute Engine ゾーン内に構成されたサービスの 1 つのインスタンスについて、1 分ごとに 10 秒間、プロファイリング データを収集し、1 つのプロファイルを作成します。たとえば、GKE サービスがポッドの 10 個のレプリカを実行している場合、10 分間に約 10 個のプロファイルが作成され、各ポッドが約 1 回プロファイリングされます。プロファイリングの期間はランダム化されているため、変動があります。詳しくは、プロファイルの収集をご覧ください。

CPU とヒープ割り当てのプロファイリングでデータ収集時に発生するオーバーヘッドは 5% 未満です。実行時間とサービスのレプリカ数で平均すると、一般的なオーバーヘッドは 0.5% 未満で、本番環境システムでの継続的なプロファイリングは有効な選択肢となります。

コンポーネント

Stackdriver Profiler は、データを収集するプロファイリング エージェントと、収集されたデータの表示や分析を行う GCP のコンソール インターフェースから構成されます。

プロファイリング エージェント

アプリケーションが実行されている仮想マシンにエージェントをインストールします。エージェントはライブラリとして提供され、実行時にコードに接続します。エージェントは、実行中のアプリからプロファイリング データを収集します。

Stackdriver Profiler エージェントの実行方法については、次の項目をご覧ください。

Google Cloud Platform 以外のシステムでもプロファイリング エージェントを実行できます。詳細については、Google Cloud Platform の外部で実行されるコードのプロファイリングをご覧ください。

Profiler のインターフェース

エージェントがプロファイリング データを収集した後、Profiler のインターフェースを使用して、どのコード領域がどのくらいの CPU とメモリを消費しているのかを確認できます。

Stackdriver Profiler のインターフェース

プロファイル データは 30 日間保存されるので、過去 30 日間のパフォーマンス データを分析できます。プロファイルをダウンロードして長期間保存することもできます。

Profiler インターフェースの使い方については、Profiler インターフェースの使用をご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。