オンデマンドの DynamoDB テーブルでスロットリングが発生しているのはなぜですか?

所要時間1分
0

オンデマンドの Amazon DynamoDB テーブルでスロットリングが発生しています。

解決策

オンデマンドキャパシティモードを使用する DynamoDB テーブルは、アプリケーションのトラフィック量に自動的に適応します。ただし、オンデマンドモードを使用するテーブルでは引き続きスロットリングが発生する可能性があります。ユースケースのトラブルシューティングを行うには以下のスロットリングの一般的な原因を参照してください:

トラフィックが前回のピークの 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 の書き込みリクエストユニットです。テーブルへのトラフィックがテーブルごとのアカウントのスループットクォータを超えると、テーブルにスロットリングが発生する可能性があります。この問題を解決するには、Service Quotas コンソールを使用して、アカウントのテーブルレベルの読み取りスループットと書き込みスループットのクォータを増やします。

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

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

関連情報

ピークトラフィックとスケーリングプロパティ

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

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

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

AWS公式
AWS公式更新しました 1年前