オンデマンドモードのスロットリングの問題のトラブルシューティング - Amazon DynamoDB

オンデマンドモードのスロットリングの問題のトラブルシューティング

オンデマンドキャパシティーモードを使用する DynamoDB テーブルは、アプリケーションのトラフィックボリュームに自動的に対応します。ただし、その場合でも、オンデマンドモードを使用するテーブルでスロットリングが発生する可能性があります。このトピックでは、オンデマンドテーブルの一般的なスロットリングの問題をトラブルシューティングする方法について説明します。

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

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

新しいテーブルでは、書き込みリクエストユニットを最大 4,000 個、読み込みリクエストユニットを最大 12,000 個、またはこれら 2 つの線形組み合わせを瞬時に処理できます。

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

  • 前にテーブルにプロビジョニングされたスループットの半分

  • オンデマンドキャパシティモードで新しく作成されたテーブルの設定

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

トラフィックがパーティションあたりの最大数を超えている

テーブルの各パーティションは、最大 3,000 個の読み取りリクエストユニット、または 1,000 個の書き込みリクエストユニット、あるいは両方の線形組み合わせを処理できます。パーティションへのトラフィックがこの制限を超えると、パーティションでスロットリングが発生する可能性があります。この問題を解決するには、以下の操作を行います。

  1. DynamoDB 用の CloudWatch Contributor Insights を使用して、テーブル内で最も頻繁にアクセスされスロットリングされるキーを特定します。

  2. ホットパーティションキーへのリクエストが時間の経過とともに分散されるように、テーブルへのリクエストをランダム化します。詳細については、「書き込みシャーディングを使用してワークロードを均等に分散させる」を参照してください。

ホットキーが原因でスロットリングの問題が発生している可能性がある

DynamoDB では、高いカーディナリティを持たないパーティションキーによって、少数のパーティションのみをターゲットとする多くのリクエストが発生する可能性があります。結果のホットパーティションが、1 秒あたり 3,000 RCU または 1,000 WCU のパーティション制限を超えると、スロットリングが発生する場合があります。

CloudWatch Contributor Insights (CCI) は、各テーブルの項目アクセスパターンの CCI グラフを提供して、この問題のデバッグを支援する診断ツールです。このツールを使用すると、DynamoDB テーブルの最も頻繁にアクセスされるキーやその他のトラフィックの傾向を継続的に監視できます。CloudWatch Contributor Insights の詳細については、「CloudWatch Contributor Insights for DynamoDB」を参照してください。詳細については、「パーティションキーを設計してワークロードを分散する」および「適切な DynamoDB パーティションキーの選択」を参照してください。

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

オンデマンドテーブルでは、テーブルレベルの読み取りスループットとテーブルレベルの書き込みスループットのクォータは、アカウントレベルで適用されます。デフォルトでは、テーブルスループットには最大 40,000 個の読み取りリクエストユニットと最大 40,000 個の書き込みリクエストユニットがあります。テーブルへのトラフィックがスループットのテーブルごとのアカウントクォータを超えると、テーブルでスロットリングが発生する可能性があります。この問題を解決するには、Service Quotas コンソールを使用して、アカウントのテーブルレベルの読み取りスループットまたは書き込みスループットのクォータを増やします。

テーブルのグローバルセカンダリインデックスがスロットリングされる

DynamoDB テーブルにスロットリングされているセカンダリグローバルインデックスがある場合、スロットリングによってベーステーブルにバックプレッシャースロットリングが発生する可能性があります。詳細については、「How does throttling on my global secondary index affect my Amazon DynamoDB table?」および「DynamoDB のグローバルセカンダリインデックスの使用」を参照してください。