オンデマンド Amazon DynamoDB テーブルでスロットリングが発生していますが、その理由がわかりません。
オンデマンドキャパシティモードを使用する DynamoDB テーブルは、アプリケーションのトラフィック量に自動的に適応します。ただし、オンデマンドモードを使用するテーブルでは依然としてスロットリングが発生する可能性があります。以下の理由により、DB テーブルにスロットリングが発生する可能性があります。
30 分以内に前回のトラフィックのピークの 2 倍を超えると、スロットリングが発生する可能性があります。前回のトラフィックのピークを超える前に、トラフィックの増加を少なくとも 30 分に分散させることがベストプラクティスです。テーブルへのトラフィックをモニタリングするには、Amazon CloudWatch の ConsumedReadCapacityUnits メトリクスを使用します。詳細については、「DynamoDB のメトリクスとディメンション」を参照してください。
新しいオンデマンドテーブルでは、最大 4,000 件の書き込みリクエストユニットまたは 12,000 件の読み取りリクエストユニット、あるいはその両方の線形の組み合わせをすぐに処理できます。
オンデマンドキャパシティモードに切り替えた既存のテーブルについては、前回のピークは次のいずれかの値になります。
詳細については、「初期スループットとスケーリングのプロパティ」をご覧ください。
テーブルの各パーティションは、最大 3,000 の読み取りリクエストユニットまたは 1,000 の書き込みリクエストユニット、または両者の組み合わせを処理できます。パーティションへのトラフィックがこのクォータを超えると、パーティションでスロットリングが発生する可能性があります。
この問題を解決するには、次の手順を実行してください。
オンデマンドテーブルの場合、テーブルレベルの読み取りスループットとテーブルレベルの書き込みスループットのクォータはアカウントレベルで適用されます。デフォルトでは、テーブルのスループットは最大 40,000 の読み取りリクエストユニットと最大 40,000 の書き込みリクエストユニットです。テーブルへのトラフィックが各テーブルのスループットクォータを超えると、テーブルでスロットリングが発生する可能性があります。
この問題を解決するには、テーブルレベルの読み取りスループットと書き込みスループットについて、アカウントレベルのクォータ増加をリクエストします。
DynamoDB テーブル上に、スロットリングされているセカンダリグローバルインデックスが存在する場合、スロットリングによってベーステーブルにバックプレッシャースロットリングが発生する可能性があります。詳細については、「Amazon DynamoDB テーブルは、グローバルセカンダリインデックスのスロットルからどのような影響を受けますか?」および「DynamoDB でのグローバルセカンダリインデックスの使用」を参照してください。
オンデマンドテーブルに設定した最大読み取りまたは書き込みスループットを超えると、テーブルにスロットリングが発生し、ThrottlingException のエラーメッセージが表示されます。
ユースケースに基づいて、次のアクションを実行します。
テーブルまたはグローバルセカンダリインデックスに設定されている最大スループットをモニタリングするには、CloudWatch コンソールで OnDemandMaxReadRequestUnits と OnDemandMaxWriteRequestUnits のメトリクスを使用します。
バーストキャパシティとアダプティブキャパシティ
Amazon DynamoDB テーブルに適切なプライマリキーを選択するにはどうすればよいですか?
DynamoDB コンソールのメトリクスが CloudWatch メトリクスと異なるのはなぜですか?
Amazon DynamoDB のサービス、アカウント、テーブルのクォータ
Amazon DynamoDB オンデマンドの設定可能な最大スループットの導入