本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
4 - 超過隨需輸送量上限
當您設定隨需資料表或 GSI 時,您可以選擇在資料表或索引層級設定最大輸送量限制 (MaxReadRequestUnits 和 MaxWriteRequestUnits),以防止失控成本或保護下游系統不堪負荷。如需最大輸送量的詳細資訊,請參閱 隨需資料表的 DynamoDB 最大輸送量。
當您的讀取或寫入耗用量超過這些自我限制時,超出限制的其他請求會收到快速調節回應。DynamoDB MaxOnDemandThroughputExceeded 會傳回具有調節原因類型的例外狀況,指出哪些資源已達到其輸送量界限。
超出限流的隨需輸送量上限
本節提供超出限流案例的隨需最大輸送量的解析指引。使用本指南之前,請確定您已識別應用程式例外狀況處理的特定限流原因,並確定受影響資源的 Amazon Resource Name (ARN)。如需有關擷取調節原因和識別調節資源的資訊,請參閱 DynamoDB 限流診斷架構。
在深入探討特定限流案例之前,請先考慮是否實際需要採取動作:
-
評估您的最大輸送量設定:這些限制刻意設定為控制成本或保護下游系統。如果您收到
MaxOnDemandThroughputExceeded限流事件,您的限制會如設計般運作。考慮提高這些限制是否符合您的原始成本控制或系統保護目標。 -
評估應用程式影響:判斷限流是否實際對您的應用程式或使用者造成問題。如果您的應用程式有效處理重試,即使偶爾限流仍符合其效能需求,則維持目前的限制可能是適當的選擇。
-
檢閱流量模式:分析限流是否代表預期的流量模式或不尋常的峰值。對於持續超過限制的可預測、經常性流量模式,可能需要調整最大輸送量設定。對於暫時峰值,實作更好的請求分佈策略可能比提高限制更合適。
如果您在考慮之後判斷您的最大輸送量設定需要調整,請參閱以下特定限流案例以取得目標修復選項:
TableReadMaxOnDemandThroughputExceeded
發生這種情況時
您的隨需資料表已超過其設定的最大讀取輸送量容量。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。
修復選項
請考慮這些步驟來處理您的限流事件:
-
增加最大輸送量限制:使用 DynamoDB 主控台
AWS CLI、 或 DynamoDB UpdateTableAPI 來增加受影響資料表MaxReadRequestUnits的值,然後監控和調整。這可讓您的資料表在調節發生之前處理更高的讀取輸送量。 -
移除上限:
MaxReadRequestUnits設定為-1以移除上限,允許根據需求擴展至您的帳戶層級輸送量配額。這會移除您的自訂限制,但仍會維護 AWS的帳戶層級保護。不過,請務必在移除此限制後密切監控支出,因為您的資料表現在可在達到帳戶層級配額之前耗用更多容量。
TableWriteMaxOnDemandThroughputExceeded
發生這種情況時
您的隨需資料表已超過其設定的寫入輸送量容量上限。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。
修復選項
請考慮這些步驟來處理您的限流事件:
-
增加最大輸送量限制:使用 DynamoDB 主控台
、 AWS CLI或 DynamoDB UpdateTableAPI 來增加受影響資料表MaxWriteRequestUnits的值,然後監控和調整。 -
移除上限:
MaxWriteRequestUnits設定為-1以移除上限,允許根據需求擴展至您的帳戶層級輸送量配額。這會移除您的自訂限制,但仍會維護 AWS的帳戶層級保護。不過,請務必在移除此限制後密切監控支出,因為您的資料表現在可在達到帳戶層級配額之前耗用更多容量。
IndexReadMaxOnDemandThroughputExceeded
發生這種情況時
在隨需模式下對 GSI 的讀取請求已超過 GSI 設定的讀取輸送量容量上限。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。
修復選項
請考慮這些步驟來處理您的限流事件:
-
提高 GSI 輸送量上限:使用 DynamoDB 主控台
、 AWS CLI或 DynamoDB UpdateTableAPI 來增加受影響 GSIMaxReadRequestUnits的值,然後監控和調整。 -
移除 GSI 上限:將 GSI
-1MaxReadRequestUnits設定為 以移除上限,允許根據需求擴展至您的帳戶層級輸送量配額。這會移除您的自訂限制,但仍維持 AWS帳戶層級的保護。不過,移除此限制之後,請務必密切監控支出。
IndexWriteMaxOnDemandThroughputExceeded
發生這種情況時
基底資料表中項目的更新會在隨需模式下觸發寫入 GSI,超過 GSI 設定的寫入輸送量容量上限,導致背壓限流。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。
修復選項
請考慮這些步驟來處理您的限流事件:
-
提高 GSI 輸送量上限:使用 DynamoDB 主控台
、 AWS CLI或 DynamoDB UpdateTableAPI 來增加受影響 GSIMaxWriteRequestUnits的值,然後監控和調整。 -
移除 GSI 上限:將 GSI
-1MaxWriteRequestUnits設定為 以移除上限,允許根據帳戶層級輸送量配額的需求進行擴展。這會移除您的自訂限制,但仍維持 AWS帳戶層級的保護。不過,移除此限制之後,請務必密切監控支出。
常見診斷和監控
當對隨需輸送量超過限流事件進行故障診斷時,數個 CloudWatch 指標有助於識別根本原因和擴展模式。
基本 CloudWatch 指標
監控這些關鍵指標,以診斷超出限流的隨需最大輸送量:
-
最大輸送量限流事件:
ReadMaxOnDemandThroughputThrottleEvents和WriteMaxOnDemandThroughputThrottleEvents追蹤因超過上限而限流的請求。ReadThrottleEvents和WriteThrottleEvents追蹤任何讀取或寫入請求何時超過佈建的容量。 -
針對資料表或全域次要索引設定的目前最大輸送量:
OnDemandMaxReadRequestUnits和OnDemandMaxWriteRequestUnits會顯示目前的最大容量限制。 -
實際容量使用量:
ConsumedReadCapacityUnits和ConsumedWriteCapacityUnits會顯示實際使用模式。
分析方法
請依照下列步驟確認隨需輸送量超過診斷上限:
-
將耗用容量與最大容量限制進行比較 - 檢查耗用量是否一致接近或超過最大限制。
-
檢閱調節事件頻率和時間,以識別模式。尋找與調節事件相符的消耗容量突然增加。
-
使用 CloudWatch Contributor Insights 來識別哪些項目或分割區索引鍵耗用最多容量。