跳至內容

為什麼我的隨需 DynamoDB 資料表會發生限流?

1 分的閱讀內容
0

我的隨需 Amazon DynamoDB 資料表發生限流,但我不知道原因。

解決方法

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

流量超過先前峰值的兩倍

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

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

對於新的隨需資料表,您可以立即驅動最多 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 中,比較 ConsumedReadCapacityUnitsConsumedWriteCapacityUnits 與您目前的配額。
  2. 請求帳戶級配額增加以提升資料表級的讀取和寫入容量單位。

資料表的 GSI 遭到限流

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

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

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

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

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

相關資訊

DynamoDB 限流解決指南)

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

為何我的 DynamoDB 指標與 CloudWatch 指標不同?

DynamoDB 配額

為 DynamoDB 隨需模式推出可設定的最大輸送量

AWS 官方已更新 5 個月前