このページでは、Cloud Spanner が提供するレイテンシの指標について説明します。アプリケーションのレイテンシが高い場合は、この指標を使用して診断を行い、問題を解決します。
これらの指標は、Google Cloud Console と Cloud Monitoring コンソールで確認できます。
レイテンシ指標の概要
Cloud Spanner のレイテンシ指標は、Cloud Spanner サービスがリクエストの処理にかかった時間を測定します。この指標は、Cloud Spanner が使用した CPU 時間でなく、実際の経過時間を収集します。
このレイテンシ指標には Cloud Spanner 以外で発生したレイテンシは含まれません。ネットワークのレイテンシや、アプリケーション レイヤー内のレイテンシは含まれません。他の種類のレイテンシを測定するには、Cloud Monitoring を使用して、アプリケーションにカスタム指標を設定します。
レイテンシ指標のグラフは、Cloud Console と Cloud Monitoring コンソールで確認できます。読み取りと書き込みの両方を含むレイテンシを表示することも、読み取りと書き込みのレイテンシを個別に表示することもできます。
Cloud Spanner は、リクエストのレイテンシに基づいてリクエストをパーセンタイルにグループ化します。レイテンシ指標は 50 パーセンタイルと 99 パーセンタイルで確認できます。
50 パーセンタイルのレイテンシ: 最も処理時間の短いリクエストの 50% の最大レイテンシ(秒)。たとえば、50 パーセンタイルのレイテンシが 0.5 秒の場合、Cloud Spanner は、50% のリクエストを 0.5 秒未満で処理しています。
この指標は、中央値のレイテンシともいわれます。
99 パーセンタイルのレイテンシ: 最も処理時間の短いリクエストの 99% の最大レイテンシ(秒)。たとえば、99 パーセンタイルのレイテンシが 2 秒の場合、Cloud Spanner は、99% のリクエストを 2 秒未満で処理しています。
1 秒あたりのレイテンシとオペレーション
インスタンスが一定の期間内に少数のリクエストを処理している場合、50 パーセンタイルや 99 パーセンタイルのレイテンシでは、インスタンス全体のパフォーマンスを表す指標としては意味がありません。このような状況では、非常に少数の外れ値でレイテンシ指標が大幅に変化する可能性があります。
たとえば、インスタンスが 1 時間に 100 リクエストを処理しているとします。この場合、1 時間の 99 パーセンタイルのレイテンシは、最も遅いリクエストの処理時間になります。1 つのリクエストに基づくレイテンシの測定は意味がありません。
レイテンシ問題の診断方法
以降のセクションでは、アプリケーション全体のレイテンシが高くなる一般的な問題の診断方法について説明します。
インスタンスのレイテンシ指標は、Cloud Console で簡単に確認できます。指標を詳しく分析し、レイテンシと他の指標の相関関係を調べる場合には、Cloud Monitoring コンソールを使用します。
全体のレイテンシが高く、Cloud Spanner のレイテンシが低い場合
アプリケーションのレイテンシが想定より高く、Cloud Spanner のレイテンシ指標が全体のレイテンシをかなり下回っている場合は、アプリケーション コードに問題がある可能性があります。アプリケーションのパフォーマンスが低下し、一部のコードパスの処理速度が遅くなると、各リクエストの全体のレイテンシが増加する可能性があります。
この問題を確認するには、アプリケーションのベンチマークを取り、想定以上に遅いコードパスを特定します。
また、Cloud Spanner と通信を行うコードをコメントにし、全体のレイテンシを再度測定することもできます。全体のレイテンシに大きな変化が見られない場合は、Cloud Spanner が高レイテンシの原因とは考えられません。
全体のレイテンシが高く、Cloud Spanner のレイテンシも高い場合
アプリケーションのレイテンシが想定より高く、Cloud Spanner のレイテンシ指標も高い場合は、いくつかの原因が考えられます。
インスタンスがより多くのノード数を必要としている。インスタンスの CPU リソースが不足し、CPU 使用率が推奨の最大値を超えている場合、Cloud Spanner がリクエストを迅速かつ効率的に処理できなくなります。
一部のクエリが原因で CPU 使用率が高くなっている。 クエリ パラメータやセカンダリ インデックスなど、処理効率を改善する Cloud Spanner 機能をクエリで使用できない場合や、非常に多くの結合や CPU 使用率の高いオペレーションがクエリに含まれている場合、インスタンスに割り当てられた CPU リソースの大半をクエリが使用している可能性があります。
この問題を確認するには、Cloud Monitoring コンソールを使用して CPU の高使用率と高レイテンシの相関関係を分析します。また、インスタンスのクエリ統計で、同じ期間に CPU 使用率が高いクエリが実行されているかどうか確認します。
同じ期間に CPU 使用率とレイテンシの両方が高い場合は、次の操作を行って問題を解決します。
CPU 使用率の高いクエリが多くない場合は、インスタンスにノードを追加します。
ノードを追加すると、CPU リソースが増加し、Cloud Spanner でより多くのワークロードを処理できるようになります。
CPU 使用率の高いクエリがある場合は、クエリ実行プランを確認して、クエリの処理が遅い理由を特定します。Cloud Spanner に関する SQL のベスト プラクティスの説明に従ってクエリを更新します。
必要であれば、データベースのスキーマ設計を見直し、クエリが効率的に処理されるようにスキーマを更新します。
次のステップ
- Cloud Console または Cloud Monitoring コンソールを使用してインスタンスをモニタリングします。
- 高レイテンシと他の指標の相関分析を行う方法を学習する。
- SQL のベスト プラクティスとタイムスタンプの範囲を使用してレイテンシを低減する方法を学習する。
- SQL ステートメントを使用して、クエリ統計テーブルでレイテンシを確認する。
- インスタンスの構成がレイテンシに及ぼす影響を理解する。