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

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

所要時間1分
0

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

解決策

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

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

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

この問題を解決するには、前回のピークの 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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#OnDemandMaxWriteRequestUnits) メトリクスを使用します。

関連情報

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

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

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

Amazon DynamoDB のクォータ

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

AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ