オンデマンド DynamoDB テーブルでスロットリングが発生している理由を教えてください。

所要時間1分
0

オンデマンド Amazon DynamoDB テーブルでスロットリングが発生していますが、その理由がわかりません。

解決策

オンデマンドキャパシティモードを使用する DynamoDB テーブルは、アプリケーションのトラフィック量に自動的に適応します。ただし、オンデマンドモードを使用するテーブルでは依然としてスロットリングが発生する可能性があります。以下の理由により、DB テーブルにスロットリングが発生する可能性があります。

トラフィックが前回のピークの 2 倍を超えている

30 分以内に前回のトラフィックのピークの 2 倍を超えると、スロットリングが発生する可能性があります。前回のトラフィックのピークを超える前に、トラフィックの増加を少なくとも 30 分に分散させることがベストプラクティスです。テーブルへのトラフィックをモニタリングするには、Amazon CloudWatch の ConsumedReadCapacityUnits メトリクスを使用します。詳細については、「DynamoDB のメトリクスとディメンション」を参照してください。

新しいオンデマンドテーブルでは、最大 4,000 件の書き込みリクエストユニットまたは 12,000 件の読み取りリクエストユニット、あるいはその両方の線形の組み合わせをすぐに処理できます。

オンデマンドキャパシティモードに切り替えた既存のテーブルについては、前回のピークは次のいずれかの値になります。

  • テーブルに以前プロビジョニングされたスループットの半分
  • オンデマンドキャパシティモードで新しく作成されたテーブルの設定

詳細については、「初期スループットとスケーリングのプロパティ」をご覧ください。

トラフィックが各パーティションの最大値を超えている

テーブルの各パーティションは、最大 3,000 の読み取りリクエストユニットまたは 1,000 の書き込みリクエストユニット、または両者の組み合わせを処理できます。パーティションへのトラフィックがこのクォータを超えると、パーティションでスロットリングが発生する可能性があります。

この問題を解決するには、次の手順を実行してください。

  1. CloudWatch Contributor Insights for DynamoDB を使用して、テーブル内で最も頻繁にアクセスされ、スロットリングが発生しているキーを特定します。
  2. ホットパーティションキーへのリクエストが時間の経過とともに分散されるように、テーブルへのリクエストをランダム化します。詳細については、「書き込みシャーディングを使用してワークロードを均等に分散する」をご覧ください。

トラフィックがアカウントの各テーブルに対するクォータを超えています

オンデマンドテーブルの場合、テーブルレベルの読み取りスループットとテーブルレベルの書き込みスループットのクォータはアカウントレベルで適用されます。デフォルトでは、テーブルのスループットは最大 40,000 の読み取りリクエストユニットと最大 40,000 の書き込みリクエストユニットです。テーブルへのトラフィックが各テーブルのスループットクォータを超えると、テーブルでスロットリングが発生する可能性があります。

この問題を解決するには、テーブルレベルの読み取りスループットと書き込みスループットについて、アカウントレベルのクォータ増加をリクエストします。

テーブルのグローバルセカンダリインデックスでスロットリングが発生している

DynamoDB テーブル上に、スロットリングされているセカンダリグローバルインデックスが存在する場合、スロットリングによってベーステーブルにバックプレッシャースロットリングが発生する可能性があります。詳細については、「Amazon DynamoDB テーブルは、グローバルセカンダリインデックスのスロットルからどのような影響を受けますか?」および「DynamoDB でのグローバルセカンダリインデックスの使用」を参照してください。

トラフィックが設定された最大スループットを超えている

オンデマンドテーブルに設定した最大読み取りまたは書き込みスループットを超えると、テーブルにスロットリングが発生し、ThrottlingException のエラーメッセージが表示されます。

ユースケースに基づいて、次のアクションを実行します。

テーブルまたはグローバルセカンダリインデックスに設定されている最大スループットをモニタリングするには、CloudWatch コンソールで OnDemandMaxReadRequestUnitsOnDemandMaxWriteRequestUnits のメトリクスを使用します。

関連情報

バーストキャパシティとアダプティブキャパシティ

Amazon DynamoDB テーブルに適切なプライマリキーを選択するにはどうすればよいですか?

DynamoDB コンソールのメトリクスが CloudWatch メトリクスと異なるのはなぜですか?

Amazon DynamoDB のサービス、アカウント、テーブルのクォータ

Amazon DynamoDB オンデマンドの設定可能な最大スループットの導入

AWS公式
AWS公式更新しました 7ヶ月前