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

このトピックでは、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. Query InsightsTransaction Insights を確認して、クエリやトランザクションのパフォーマンスのボトルネックがあるかどうかを確認します。ほとんどの場合、Spanner のベスト プラクティスに従ってクエリやトランザクションを最適化する必要があります。

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

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

次のステップ