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