Amazon Keyspaces でのキャパシティ管理エラーのトラブルシューティング - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Keyspaces でのキャパシティ管理エラーのトラブルシューティング

サーバーレスキャパシティに関して問題がありますか。以下は、一般的なシナリオとその解決方法です。

サーバーレス容量エラー

このセクションでは、サーバーレスキャパシティ管理に関連するエラーの認識方法と解決方法について説明します。例えば、アプリケーションがプロビジョンドスループット性能を超えると、キャパシティ不足イベントが発生することがあります。

Apache Cassandra は、ノード群で実行するように設計されたクラスタベースのソフトウェアであるため、スループットキャパシティなどのサーバーレス機能に関連する例外メッセージはありません。ほとんどのドライバーでは Apache Cassandra で利用可能なエラーコードしか認識されないため、Amazon Keyspaces では、互換性を維持するために同一のエラーコードセットを使用します。

Cassandra エラーを基盤となるキャパシティイベントにマッピングするには、Amazon CloudWatch を使用して関連する Amazon Keyspaces メトリクスをモニタリングできます。クライアント側のエラーを発生させるキャパシティ不足イベントは、イベントの原因となっているリソースに基づいて、次の 3 つのグループに分類できます。

  • テーブル – テーブルに対して [Provisioned] (プロビジョンド) キャパシティモードを選択した場合に、アプリケーションがプロビジョンドスループットを超えると、キャパシティ不足エラーが発生する可能性があります。詳細については、「Amazon Keyspaces で読み取り/書き込みキャパシティモードを設定する」を参照してください。

  • パーティション – 特定のパーティションに対するトラフィックが 3,000 RCUsまたは 1,000 を超える場合、キャパシティ不足イベントが発生する可能性がありますWCUs。ベストプラクティスとして、パーティション間でトラフィックを均一に分散させることをお勧めします。詳細については、「データモデリングのベストプラクティス: データモデルを設計するための推奨事項」を参照してください。

  • 接続 — 接続 1 つあたりの 1 秒あたりの最大オペレーション数のクォータを超えると、スループットが不十分になる可能性があります。スループットを高めるために、ドライバーによる接続を設定する際に、デフォルト接続の数を増やすことができます。

    Amazon Keyspaces の接続を設定する方法については、「」を参照してくださいAmazon Keyspaces で接続を設定する方法。VPC エンドポイントを介した接続の最適化の詳細については、「」を参照してくださいAmazon Keyspaces のVPCエンドポイント経由で接続を設定する方法

クライアント側エラーを返すキャパシティ不足イベントの原因となっているリソースを特定するために、Amazon Keyspaces コンソールでダッシュボードを確認できます。デフォルトでは、コンソールは、テーブルのキャパシティタブのキャパシティおよび関連 CloudWatch メトリクスセクションで、最も一般的なキャパシティおよびトラフィック関連のメトリクスを集約したビューを提供します。

Amazon を使用して独自のダッシュボードを作成するには CloudWatch、次の Amazon Keyspaces メトリクスを確認してください。

  • PerConnectionRequestRateExceeded — 接続ごとのリクエストレートのクォータを超える Amazon Keyspaces へのリクエスト。Amazon Keyspaces への各クライアント接続は、1 秒あたり最大 3000 件のCQLリクエストをサポートできます。複数の接続を作成すれば、1 秒あたり 3000 を超えるリクエストを実行できます。

  • ReadThrottleEvents — テーブルの読み取りキャパシティを超える Amazon Keyspaces へのリクエスト。

  • StoragePartitionThroughputCapacityExceeded — パーティションのスループットキャパシティを超える Amazon Keyspaces ストレージパーティションへのリクエスト。Amazon Keyspaces ストレージパーティションは、1 秒あたり最大 1000 WCU個WRU、1 秒あたり最大 3000 RCU個RRUまでサポートできます。これらの例外を軽減するために、データモデルを確認して、読み取り/書き込みトラフィックをより多くのパーティションに分散させることをお勧めします。

  • WriteThrottleEvents — テーブルの書き込みキャパシティを超える Amazon Keyspaces へのリクエスト。

の詳細については CloudWatch、「」を参照してくださいアマゾンによるアマゾンKeyspaces モニタリング CloudWatch。Amazon Keyspaces で使用できるすべての CloudWatch メトリクスのリストについては、「」を参照してくださいAmazon Keyspaces のメトリクスとディメンション

注記

Amazon Keyspaces で一般的に観察されるすべてのメトリクスを表示するカスタムダッシュボードの使用を開始するには、AWS サンプルリポジトリ GitHub の で利用可能な構築済み CloudWatch テンプレートを使用できます。

クライアントドライバーから NoHostAvailable というキャパシティ不足エラーが送られてくる

テーブルに対して Read_Timeout または Write_Timeout という例外が表示されています。

キャパシティが不足している Amazon Keyspaces テーブルに対して書き込みや読み取りを繰り返し試みると、ドライバー固有のクライアント側エラーが発生する可能性があります。

CloudWatch を使用して、プロビジョニングされたスループットメトリクスと実際のスループットメトリクス、およびテーブルの容量不足イベントをモニタリングします。例えば、十分なスループットキャパシティがない読み取りリクエストは、Read_Timeout 例外が発生して失敗し、ReadThrottleEvents メトリクスに投稿されます。十分なスループットキャパシティがない書き込みリクエストは、Write_Timeout 例外が発生して失敗し、WriteThrottleEvents メトリクスに投稿されます。これらのメトリクスの詳細については、「Amazon Keyspaces のメトリクスとディメンション」を参照してください。

この問題を解決するには、以下のオプションのいずれかを検討してください。

アカウントのデフォルトのキャパシティクォータを増やす必要がある場合は、「Amazon Keyspaces (Apache Cassandra 向け) のクォータ」を参照してください。

パーティションキャパシティの超過に関連するエラーが表示されています。

エラーが表示されるとStoragePartitionThroughputCapacityExceeded、パーティション容量が一時的に超過します。これは、アダプティブキャパシティまたはオンデマンドキャパシティによって自動的に処理される場合があります。これらのエラーを軽減するために、データモデルを確認して、より多くのパーティションに読み取り/書き込みトラフィックを分散することをお勧めします。Amazon Keyspaces ストレージパーティションは、1 秒あたり最大 1000 WCU個WRU、1 秒あたり最大 3000 RCU個RRUまでサポートできます。データモデルを改良して読み取り/書き込みトラフィックをより多くのパーティションに分散させる方法の詳細については、「データモデリングのベストプラクティス: データモデルを設計するための推奨事項」を参照してください。

Write_Timeout 例外は、同じ論理パーティションに静的データと非静的データを含める同時書き込みオペレーションのレートが上昇した場合にも発生する可能性があります。トラフィックにおいて、同じ論理パーティション内に静的データと非静的データを含める複数の同時書き込みオペレーションが実行されることが予想される場合、静的データと非静的データを別々に書き込むことをお勧めします。データを別々に書き込むと、スループットコストの最適化にも役立ちます。

接続リクエストレートの超過に関連するエラーが表示されています。

次のいずれかの原因PerConnectionRequestRateExceededが原因で表示されます。

  • セッションごとに設定された接続数が不足している可能性があります。

  • VPC エンドポイントのアクセス許可が正しく設定されていないため、利用可能なピアよりも接続数が少ない可能性があります。VPC エンドポイントポリシーの詳細については、「」を参照してくださいAmazon Keyspaces 用インターフェイス VPC エンドポイントの使用

  • 4.x ドライバーを使用している場合は、ホスト名の検証が有効になっているかどうかを確認してください。ドライバーはデフォルトでTLSホスト名の検証を有効にします。この設定により、Amazon Keyspaces がシングルノードクラスターとしてドライバーに表示されます。ホスト名の検証をオフにすることをお勧めします。

接続とスループットが最適化されるように、次のベストプラクティスに従うことをお勧めします。

  • CQLクエリスループットの調整を設定します。

    Amazon Keyspaces は 1 秒あたりTCP接続あたり最大 3,000 件のCQLクエリをサポートしますが、ドライバーが確立できる接続数に制限はありません。

    ほとんどのオープンソース Cassandra ドライバーで、Cassandra への接続プールが確立され、その接続プールでクエリのロードバランスが行われます。Amazon Keyspaces では 9 つのピア IP アドレスをドライバーに開示します。ほとんどのドライバーのデフォルト動作は、各ピア IP アドレスに対して 1 つの接続を確立することです。したがって、デフォルト設定を使用するドライバーの最大CQLクエリスループットは、1 秒あたり 27,000 CQLクエリになります。

    この数を増やすには、ドライバーが接続プールで維持している IP アドレスあたりの接続数を増やすことをお勧めします。例えば、IP アドレスあたりの最大接続数を 2 に設定すると、ドライバーの最大スループットが 1 秒あたり 54,000 CQLクエリに倍増します。

  • 単一ノード接続を最適化します。

    ほとんどのオープンソース Cassandra ドライバーでは、デフォルトで、セッションの確立時に system.peers テーブルでアドバタイズされた各 IP アドレスへに対して、1 つ以上の接続が確立されます。ただし、設定によっては、ドライバーにより単一の Amazon Keyspaces IP アドレスに接続されることがあります。これは、ドライバーがピアノード ( DataStax Java ドライバーなど) のSSLホスト名検証を試みている場合や、VPCエンドポイント経由で接続している場合に発生する可能性があります。

    複数の IP アドレスに接続するドライバーと同じ可用性とパフォーマンスを確保するには、次の操作の実行をお勧めします。

    • 希望するクライアントのスループットに応じて、各 IP の接続数を 9 以上に増やす。

    • 同じノードに対して再試行が実行されるようにするカスタム再試行ポリシーを作成します。詳細については、以下を参照してください。

      Amazon Keyspaces の接続の再試行ポリシーを設定する方法.

    • VPC エンドポイントを使用する場合は、Amazon Keyspaces への接続に使用されるIAMエンティティに、エンドポイントとネットワークインターフェイス情報をクエリするためのアクセス許可を付与VPCします。これにより、ロードバランシングが改善され、読み取り/書き込みスループットが向上します 詳細については、「インターフェイス VPC エンドポイント情報を含む system.peers テーブルエントリの入力」を参照してください。

データのインポート中に書き込みタイムアウトエラーが表示される

cqlsh COPY コマンドを使用してデータをアップロードしているときに、タイムアウトエラーが表示されます。

Failed to import 1 rows: WriteTimeout - Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 2, 'write_type': 'SIMPLE', 'consistency': 'LOCAL_QUORUM'}, will retry later, attempt 1 of 100

Amazon Keyspaces では、スループットキャパシティ不足により書き込みリクエストが失敗した場合に、ReadTimeout 例外と WriteTimeout 例外を使用してその失敗が示されます。容量不足の例外を診断するために、Amazon Keyspaces は Amazon に次のメトリクスを発行します CloudWatch。

  • WriteThrottleEvents

  • ReadThrottledEvents

  • StoragePartitionThroughputCapacityExceeded

データロード中に発生したキャパシティ不足エラーを解決するには、ワーカーあたりの書き込みレートまたは総取り込みレートを引き下げ、行のアップロードを再試行してください。詳細については、「ステップ 4: cqlsh COPY FROM を設定する」を参照してください。より堅牢なデータアップロードオプションについては、GitHub リポジトリ からDSBulk利用可能な の使用を検討してください。手順については step-by-step、「」を参照してくださいチュートリアル: を使用して Amazon Keyspaces にデータをロードする DSBulk

キースペースまたはテーブルの実際のストレージサイズが表示されない

キースペースまたはテーブルの実際のストレージサイズが表示されません。

テーブルのストレージサイズの詳細については、「」を参照してくださいテーブルレベルでコストを評価する。テーブル内の行サイズの計算を開始することで、ストレージサイズを見積もることもできます。行サイズの計算に関する詳しい手順については、「Amazon Keyspaces での行サイズの見積もり」を参照してください。