オンデマンドの DynamoDB テーブルを使用していますが、まだスロットルされています。なぜでしょうか?

最終更新日: 2020 年 8 月 25 日

オンデマンドの Amazon DynamoDB テーブルがスロットルされています。このような問題が発生している理由は何ですか?

簡単な説明

次に、オンデマンドテーブルがスロットルされる一般的な理由を 2 つ示します。

  • トラフィックが前のピークに比べて 2 倍以上である。
  • トラフィックがパーティションごとの最大値を超えている。

解決方法

トラフィックが前のピークの2倍以上である

30 分以内に前回のトラフィックピークの 2 倍を超えると、スロットルが発生する可能性があります。1 秒あたり 100,000 件以上の読み取りに達する前に、トラフィックの増加を 30 分以上分散することをお勧めします。Amazon CloudWatch の ConsumedReadCapacityUnits メトリックを使用して、テーブルへのトラフィックを監視します。詳細については、DynamoDB メトリクスおよびディメンションを参照してください。

新しいオンデマンドテーブルでは、最大 4,000 の書き込みリクエスト単位、12,000 の読み取りリクエスト単位、または 2 つの線形組み合わせをすぐに駆動できます。オンデマンドキャパシティーモードに切り替えた既存のテーブルの場合、前のピークがテーブルで以前プロビジョニングされたスループットの半分、またはオンデマンドキャパシティーモードで新しく作成されたテーブル設定のいずれか高い方になります。詳細については、オンデマンドキャパシティーモードの初期スループットを参照してください。

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

テーブルの各パーティションは、最大 3,000 の読み取りリクエスト単位または 1,000 の書き込みリクエスト単位、またはその両方を線形的に組み合わせることができます。パーティションへのトラフィックがこの制限値を超えると、パーティションがスロットルされる可能性があります。この問題を解決する方法:

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