跳至內容

為什麼我的隨需 DynamoDB 資料表受到限流?

1 分的閱讀內容
0

我的隨需 Amazon DynamoDB 資料表正受到限流,而我不知道原因。

解決方法

使用隨需容量模式的 DynamoDB 資料表會自動依應用程式的流量量調整容量。然而,以下情況可能會導致您的隨需 DynamoDB 資料表遭到限流。

流量超過先前峰值的兩倍

當流量在 30 分鐘內超過先前峰值輸送量的兩倍時,DynamoDB 隨需資料表可能會遭到限流。

若要解決此問題,請在達到先前峰值兩倍之前,至少用 30 分鐘逐步擴展流量。若要監控資料表的輸送量,請在 Amazon CloudWatch 中使用 ConsumedReadCapacityUnits 和 ConsumedWriteCapacityUnits 指標。若要監控隨需限流,請使用 ReadMaxOnDemandThroughputThrottleEvents 和 WriteMaxOnDemandThroughputThrottleEvents。

對於新的隨需資料表,您可以立即並同時驅動最多 4,000 寫入請求單位和 12,000 讀取請求單位。對於計畫或高峰事件,請使用預熱輸送量將資料表容量擴展至預期使用量。

如果您將現有資料表切換為隨需容量模式,則先前峰值為下列其中之一:

  • 新資料表起始容量為 4,000 寫入容量單位 (WCU) 和 12,000 讀取容量單位 (RCU)。
  • 如果您佈建的資料表容量高於起始值,則會保留較高容量。
  • 在持續使用模式下,初始容量可能更高。

流量超過每個分區的最大輸送量

資料表中的每個分區可同時提供最多 1,000 個寫入請求單位和 3,000 個讀取請求單位。如果分區的流量超過此配額,則該分區可能會遭到限流。

若要解決此問題,請完成下列步驟:

  1. 使用適用於 DynamoDB 的 CloudWatch Contributor Insights 來識別資料表中最常存取和限流的索引鍵。
  2. 使用增強型指標驗證分區限流事件是否為原因。
  3. 使用寫入碎片將請求平均分配到各分區。
  4. 最佳化您的錯誤重試及指數退避策略。

流量超過您帳戶中每個資料表的配額

預設情況下,隨需資料表具有 AWS 帳戶層級配額,每個資料表為 40,000 WCU 和 40,000 RCU。如果資料表的流量超過輸送量配額,則資料表可能會遭到限流。

若要解決此問題,請完成下列步驟:

  1. 在 CloudWatch 中,比較 ConsumedReadCapacityUnits 和 ConsumedWriteCapacityUnits 與您目前的配額。
  2. 請求帳戶級配額增加以提升資料表級的讀取和寫入容量單位。

資料表的 GSI 遭到限流

如果 DynamoDB 資料表的全域次要索引 (GSI) 發生限流,則限流可能會在基礎資料表上產生反壓限流。如需更多資訊,請參閱 Understanding GSI write throttling and back pressure in DynamoDB (了解 DynamoDB 中的 GSI 寫入限流與反壓) 和 Using GSIs in DynamoDB (在 DynamoDB 中使用 GSI)。

流量超過設定的最大輸送量

如果您為隨需資料表設定了最大輸送量配額,當超過配額時會收到「ThrottlingException」錯誤。

根據您的使用案例,採取下列其中一個動作:

若要監控您為資料表或 GSI 設定的最大輸送量,請在 CloudWatch 中使用 OnDemandMaxReadRequestUnits 和 OnDemandMaxWriteRequestUnits 指標。

相關資訊

DynamoDB throttling resolution guide (DynamoDB 限流解決指南)

如何為 DynamoDB 資料表選擇良好的主索引鍵?

為什麼 DynamoDB 主控台的指標與 CloudWatch 指標不同?

Quotas in DynamoDB (DynamoDB 配額)

Introducing configurable maximum throughput for DynamoDB on-demand (為 DynamoDB 隨需模式推出可設定的最大輸送量)

AWS 官方已更新 7 個月前