パフォーマンスの最適化は、通常はレイテンシとスループットに関連する主要な指標を特定することから始まります。これらの指標をキャプチャして追跡するモニタリングを追加すると、アプリケーションの弱点が明らかになります。指標を使用すると、最適化を実施してパフォーマンス指標を改善できます。
また、多くのモニタリング ツールで指標にアラートを設定して、特定のしきい値に達すると通知されるようにできます。たとえば、失敗したリクエストの割合が通常のレベルの x% を超えて増加したときに通知されるようにアラートを設定できます。モニタリング ツールは、通常のパフォーマンスがどのようなものであるかを特定し、レイテンシ、エラー量、その他の重要な指標の異常な急増を特定するのに役立ちます。ビジネス クリティカルな期間中、または新しいコードが本番環境に push された後は、これらの指標をモニタリングできることが特に重要です。
レイテンシ指標を特定する
UI の応答性を可能な限り維持するようにし、ユーザーはモバイルアプリに対してより高い基準を期待していることに留意します。また、バックエンド サービスのレイテンシも測定、追跡する必要があります。特に、特に注意しないと、スループットの問題につながる可能性があるためです。
次の指標をトラッキングすることをおすすめします。
- リクエストの所要時間
- サブシステム粒度でのリクエスト期間(API 呼び出しなど)
- ジョブの所要時間
スループット指標を特定する
スループットは、特定の期間に処理されたリクエストの合計数の測定値です。スループットはサブシステムのレイテンシの影響を受ける可能性があるため、スループットを向上させるには、レイテンシの最適化が必要になる場合があります。
次の指標をトラッキングすることをおすすめします。
- 秒間クエリ数
- 1 秒あたりに転送されるデータのサイズ
- 1 秒あたりの I/O オペレーション数
- リソース使用率(CPU 使用率、メモリ使用率など)
- 処理バックログのサイズ(Pub/Sub やスレッド数など)
単なる平均値ではない
パフォーマンス測定でよくある間違いは、平均(平均)ケースのみに注目することです。これは便利ですが、レイテンシの分布に関する分析情報を得ることはできません。追跡に適した指標は、パフォーマンス パーセンタイルです。たとえば、指標の 50/75/90/99 パーセンタイルなどです。
通常、最適化は 2 ステップで実施できます。まず レイテンシを 90 パーセンタイルに 最適化します次に、99 パーセンタイル(テール レイテンシとも呼ばれます)について検討します。これは、リクエストのごく一部であり、完了までに非常に長い時間がかかります。
詳細な結果のためのサーバーサイド モニタリング
一般的に、サーバーサイドのプロファイリングは指標のトラッキングに適しています。サーバーサイドは通常、計測がはるかに容易で、より詳細なデータにアクセスでき、接続の問題による摂動の影響が少なくなります。
ブラウザ モニタリングでエンドツーエンドの可視性を実現
ブラウザのプロファイリングを使用すると、エンドユーザー エクスペリエンスに関する追加の分析情報を取得できます。リクエスト速度が遅いページを特定し、サーバー側のモニタリングと関連付けて詳細な分析を行うことができます。
Google アナリティクスのページ速度レポートでは、ページ読み込み時間をすぐにモニタリングできます。これにより、特にサイトのユーザー エクスペリエンスを把握するのに役立つビューがいくつか提供されます。
- ページの読み込み時間
- 読み込み時間をリダイレクトする
- サーバーの応答時間
クラウドでのモニタリング
アプリケーションのパフォーマンス指標をキャプチャしてモニタリングするために使用できるツールは数多くあります。たとえば、Google Cloud Logging を使用してパフォーマンス指標を Google Cloud プロジェクトに記録してから、Google Cloud Monitoring のダッシュボードを設定して、ログに記録された指標をモニタリングおよびセグメント化できます。
Python クライアント ライブラリのカスタム インターセプタから Google Cloud Logging へのロギングの例については、ロギングガイドをご覧ください。そのデータを Google Cloud で利用できるため、ログに記録されたデータに指標を構築し、Google Cloud Monitoring を通じてアプリケーションを可視化できます。ユーザー定義のログベースの指標のガイドに沿って、Google Cloud Logging に送信されたログを使用して指標を作成します。
また、Monitoring クライアント ライブラリを使用してコード内に指標を定義し、ログとは別に Monitoring に直接送信することもできます。
ログベースの指標の例
アプリケーションのエラー率をよりよく理解するために、is_fault
値をモニタリングするとします。ログから is_fault
値を新しいカウンタ指標 ErrorCount
に抽出できます。
Cloud Logging では、ラベルを使用して、ログ内の他のデータに基づいて指標をカテゴリに分類できます。Cloud Logging に送信される method
フィールドのラベルを構成すると、Google Ads API メソッドでエラー数がどのように分類されるかを確認できます。
ErrorCount
指標と Method
ラベルが構成されたら、Monitoring ダッシュボードで新しいグラフを作成し、Method
でグループ化された ErrorCount
をモニタリングできます。
アラート
Cloud Monitoring やその他のツールでは、指標によってアラートをトリガーするタイミングと方法を指定するアラート ポリシーを構成できます。Cloud Monitoring アラートの設定手順については、アラートガイドをご覧ください。