パフォーマンスの最適化は、主要な指標(通常はレイテンシとスループットに関連するもの)を特定することから始まります。これらの指標をキャプチャして追跡するモニタリングを追加すると、アプリケーションの弱点が露呈します。指標を使用すると、最適化を実施してパフォーマンス指標を改善できます。
また、多くのモニタリング ツールで指標にアラートを設定して、特定のしきい値に達したときに通知を受け取ることができます。たとえば、失敗したリクエストの割合が通常のレベルの 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 アラートの設定手順については、アラートガイドをご覧ください。