パフォーマンスの最適化は、通常レイテンシとスループットに関連する主要な指標を特定することから始まります。これらの指標をキャプチャして追跡するためのモニタリングを追加すると、アプリケーションの弱点が露呈します。指標を使用すると、最適化を実施してパフォーマンス指標を改善できます。
また、多くのモニタリング ツールでは、指標のアラートを設定して、特定のしきい値に達したときに通知を受け取ることができます。たとえば、失敗したリクエストの割合が通常のレベルの x% を超えたときに通知するようにアラートを設定できます。モニタリング ツールを使用すると、通常のパフォーマンスの状態を特定し、レイテンシ、エラー数、その他の主要な指標の異常な急増を特定できます。これらの指標をモニタリングする機能は、ビジネス クリティカルな期間中や、新しいコードが本番環境にプッシュされた後に特に重要です。
レイテンシ指標を特定する
ユーザーはモバイルアプリに対してさらに高い基準を期待していることに留意し、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 アラートの設定手順については、アラート ガイドをご覧ください。