レイテンシの発生場所を特定する

このページでは、Spanner コンポーネントのトラブルシューティングを行い、レイテンシの原因を特定する方法について説明します。Spanner リクエストで発生する可能性のあるレイテンシ ポイントの詳細については、Spanner リクエストのレイテンシ ポイントをご覧ください。

  1. サービスに影響するクライアント アプリケーションで、クライアントの往復レイテンシからレイテンシが増加していることを確認します。クライアントサイド指標で次のディメンションを確認します。

    • クライアント アプリケーション名
    • クライアントの局所性(たとえば、Compute Engine VM ゾーン)とホスト(すなわち、VM 名)
    • Spanner API メソッド
    • Spanner API のステータス

    これらのディメンションごとにグループ化して、問題が特定のクライアント、ステータス、方法に限定されているかを確認します。デュアルリージョン ワークロードまたはマルチリージョン ワークロードの場合は、問題が特定のクライアントまたは Spanner リージョンに限定されているかを確認します。

  2. クライアント アプリケーションの正常性、特にクライアント側のコンピューティング インフラストラクチャ(たとえば、VM、CPU、メモリ使用率、接続、ファイル記述子など)を確認します。

  3. Spanner コンポーネントのレイテンシを確認します。

    a. OpenTelemetry または OpenCensus を使用して、クライアントの往復レイテンシを確認する。

    b. OpenTelemetry または OpenCensus を使用して、Google Front End(GFE)のレイテンシを確認する。

    c. OpenTelemetry または OpenCensus を使用して、Spanner API リクエストのレイテンシを確認する。

    クライアントの往復レイテンシは高いが GFE のレイテンシは低く、Spanner API リクエストのレイテンシが低い場合は、アプリケーション コードに問題がある可能性があります。クライアントとリージョン GFE 間のネットワークの問題を示している可能性もあります。アプリケーションのパフォーマンスに問題があり、一部のコードパスが遅くなる場合、各 API リクエストに対するクライアントの往復レイテンシが増加する可能性があります。また、前のステップで検出されなかったクライアント コンピューティング インフラストラクチャに問題がある場合もあります。

  4. Spanner 指標の次のディメンションを確認します。

    • Spanner データベース名
    • Spanner API メソッド
    • Spanner API のステータス

    これらのディメンションでグループ化して、問題が特定のデータベース、ステータス、方法に限定されているかを確認します。デュアルリージョン ワークロードまたはマルチリージョン ワークロードの場合は、問題が特定のリージョンに限定されているかを確認します。

    GFE のレイテンシは高いが、Spanner API リクエストのレイテンシが低い場合は、次のいずれかの原因である可能性があります。

    • 別のリージョンからデータベースにアクセスしている。このアクションにより、GFE のレイテンシが高くなり、Spanner API リクエストのレイテンシが低くなる可能性があります。たとえば、us-central1 リージョンにインスタンスを持つ us-east1 リージョンのクライアントからのトラフィックは、GFE のレイテンシは高くなりますが、Spanner API リクエストのレイテンシは低い場合があります。

    • GFE レイヤに問題がある。Google Cloud ステータス ダッシュボードをチェックして、リージョンでネットワーク問題が発生中かどうかを確認してください。問題がなければ、サポート エンジニアが GFE のトラブルシューティングをサポートできるように、サポートケースを開いてこの情報を入力します。

  5. インスタンスの CPU 使用率を確認する。インスタンスの CPU 使用率が推奨レベルを超えている場合は、ノードを手動で追加するか、自動スケーリングを設定する必要があります。詳細については、自動スケーリングの概要をご覧ください。

  6. Key Visualizer を使用して、潜在的なホットスポットや不均衡なアクセス パターンをモニタリングしてトラブルシューティングを行い、問題の発生時期と関連性が強いアプリケーション コードの変更をロールバックしてみてください。

  7. トラフィック パターンの変化を確認する。

  8. クエリ分析情報トランザクション分析情報をチェックして、クエリまたはトランザクションのパフォーマンスのボトルネックがあるかどうかを確認する。

  9. 最も古いアクティブなクエリのプロシージャを使用して、パフォーマンスのボトルネックを引き起こす可能性のある時間のかかるクエリを確認し、必要に応じてクエリをキャンセルする。

  10. 次のトピックのトラブルシューティング セクションの手順に沿って、Spanner イントロスペクション ツールを使用して問題のトラブルシューティングを行います。

次のステップ