スキップしてコンテンツを表示

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

所要時間1分
0

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

解決策

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

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

DynamoDB オンデマンドテーブルは、30 分間のウィンドウ内でトラフィックが前回のピークスループットの 2 倍を超えた場合にスロットリングが発生することがあります。

この問題を解決するには、前回のピークの 2 倍に達する前に、少なくとも 30 分かけてトラフィックを段階的にスケールしてください。テーブルのスループットをモニタリングするには、Amazon CloudWatch の ConsumedReadCapacityUnits および ConsumedWriteCapacityUnits メトリクスを使用してください。オンデマンドスロットリングをモニタリングするには、ReadMaxOnDemandThroughputThrottleEvents および WriteMaxOnDemandThroughputThrottleEvents を使用してください。

新しいオンデマンドテーブルでは、即座に同時に最大 4,000 のライトリクエストユニットと 12,000 のリードリクエストユニットを処理できます。計画的なイベントやピークイベントの場合は、ウォームスループットを使用して、テーブルのキャパシティを予想される使用量にスケールしてください。

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

  • 新しいテーブルは、4,000 書き込みキャパシティユニット (WCU) と 12,000 読み取りキャパシティユニット (RCU) から開始する。
  • テーブルを初期値よりも高い値でプロビジョニングした場合、その高いキャパシティが保持される。
  • 持続的な使用パターンでは、初期キャパシティが高くなる可能性がある。

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

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

この問題を解決するには、次の手順を実行します。

  1. CloudWatch Contributor Insights for DynamoDB を使用して、テーブル内で最も頻繁にアクセスされ、スロットリングが発生しているキーを特定する。
  2. 拡張メトリクスを使用して、パーティションスロットルイベントが原因であることを確認する。
  3. 書き込みシャードを使用して、リクエストをパーティション全体に均等に分散する。
  4. エラー再試行とエクスポネンシャルバックオフ戦略を最適化する。

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

デフォルトでは、オンデマンドテーブルには AWS アカウントレベルのクォータとして、テーブルごとに 40,000 WCU と 40,000 RCU が設定されています。テーブルへのトラフィックがスループットクォータを超えると、テーブルでスロットルが発生する可能性があります。

この問題を解決するには、次の手順を実行します。

  1. CloudWatch で、ConsumedReadCapacityUnits および ConsumedWriteCapacityUnits を現在のクォータと比較する。
  2. テーブルレベルの読み取りおよび書き込みキャパシティユニットにおいて、アカウントレベルのクォータ引き上げをリクエストする。

テーブルの GSI でスロットリングが発生している

DynamoDB テーブルにスロットリングが発生しているグローバルセカンダリインデックス (GSI) がある場合、そのスロットリングがベーステーブルにバックプレッシャースロットリングを引き起こす可能性があります。詳細については、『DynamoDB のグローバルセカンダリインデックス (GSI) の書き込みスロットリングとバックプレッシャーについて』および『DynamoDB のグローバルセカンダリインデックスの使用』を参照してください。

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

オンデマンドテーブルに最大スループットクォータを設定している場合、スループットクォータを超えると "ThrottlingException" エラーが発生します。

ユースケースに基づいて、以下のいずれかのアクションを実行します。

テーブルまたは GSI に設定した最大スループットをモニタリングするには、CloudWatch の OnDemandMaxReadRequestUnits および OnDemandMaxWriteRequestUnits メトリクスを使用してください。

関連情報

DynamoDB スロットリング解決ガイド

DynamoDB テーブルに適切なプライマリキーを選択する方法を教えてください。

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

Amazon DynamoDB のクォータ

Introducing configurable maximum throughput for DynamoDB on-demand (DynamoDB オンデマンドの設定可能な最大スループットの導入)

AWS公式更新しました 7ヶ月前
1コメント

This article was reviewed and updated on 2026-03-09.

エキスパート

応答済み 2ヶ月前

関連するコンテンツ