4 - 超過隨需輸送量上限 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

4 - 超過隨需輸送量上限

當您設定隨需資料表或 GSI 時,您可以選擇在資料表或索引層級設定最大輸送量限制 (MaxReadRequestUnitsMaxWriteRequestUnits),以防止失控成本或保護下游系統不堪負荷。如需最大輸送量的詳細資訊,請參閱 隨需資料表的 DynamoDB 最大輸送量

當您的讀取或寫入耗用量超過這些自我限制時,超出限制的其他請求會收到快速調節回應。DynamoDB MaxOnDemandThroughputExceeded 會傳回具有調節原因類型的例外狀況,指出哪些資源已達到其輸送量界限。

超出限流的隨需輸送量上限

本節提供超出限流案例的隨需最大輸送量的解析指引。使用本指南之前,請確定您已識別應用程式例外狀況處理的特定限流原因,並確定受影響資源的 Amazon Resource Name (ARN)。如需有關擷取調節原因和識別調節資源的資訊,請參閱 DynamoDB 限流診斷架構

在深入探討特定限流案例之前,請先考慮是否實際需要採取動作:

  • 評估您的最大輸送量設定:這些限制刻意設定為控制成本或保護下游系統。如果您收到MaxOnDemandThroughputExceeded限流事件,您的限制會如設計般運作。考慮提高這些限制是否符合您的原始成本控制或系統保護目標。

  • 評估應用程式影響:判斷限流是否實際對您的應用程式或使用者造成問題。如果您的應用程式有效處理重試,即使偶爾限流仍符合其效能需求,則維持目前的限制可能是適當的選擇。

  • 檢閱流量模式:分析限流是否代表預期的流量模式或不尋常的峰值。對於持續超過限制的可預測、經常性流量模式,可能需要調整最大輸送量設定。對於暫時峰值,實作更好的請求分佈策略可能比提高限制更合適。

如果您在考慮之後判斷您的最大輸送量設定需要調整,請參閱以下特定限流案例以取得目標修復選項:

TableReadMaxOnDemandThroughputExceeded

發生這種情況時

您的隨需資料表已超過其設定的最大讀取輸送量容量。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。

修復選項

請考慮這些步驟來處理您的限流事件:

  • 增加最大輸送量限制:使用 DynamoDB 主控台AWS CLI、 或 DynamoDB UpdateTable API 來增加受影響資料表MaxReadRequestUnits的值,然後監控和調整。這可讓您的資料表在調節發生之前處理更高的讀取輸送量。

  • 移除上限:MaxReadRequestUnits設定為 -1以移除上限,允許根據需求擴展至您的帳戶層級輸送量配額。這會移除您的自訂限制,但仍會維護 AWS的帳戶層級保護。不過,請務必在移除此限制後密切監控支出,因為您的資料表現在可在達到帳戶層級配額之前耗用更多容量。

TableWriteMaxOnDemandThroughputExceeded

發生這種情況時

您的隨需資料表已超過其設定的寫入輸送量容量上限。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。

修復選項

請考慮這些步驟來處理您的限流事件:

  • 增加最大輸送量限制:使用 DynamoDB 主控台AWS CLI或 DynamoDB UpdateTable API 來增加受影響資料表MaxWriteRequestUnits的值,然後監控和調整。

  • 移除上限:MaxWriteRequestUnits設定為 -1以移除上限,允許根據需求擴展至您的帳戶層級輸送量配額。這會移除您的自訂限制,但仍會維護 AWS的帳戶層級保護。不過,請務必在移除此限制後密切監控支出,因為您的資料表現在可在達到帳戶層級配額之前耗用更多容量。

IndexReadMaxOnDemandThroughputExceeded

發生這種情況時

在隨需模式下對 GSI 的讀取請求已超過 GSI 設定的讀取輸送量容量上限。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。

修復選項

請考慮這些步驟來處理您的限流事件:

  • 提高 GSI 輸送量上限:使用 DynamoDB 主控台AWS CLI或 DynamoDB UpdateTable API 來增加受影響 GSI MaxReadRequestUnits的值,然後監控和調整。

  • 移除 GSI 上限:將 GSI -1 MaxReadRequestUnits設定為 以移除上限,允許根據需求擴展至您的帳戶層級輸送量配額。這會移除您的自訂限制,但仍維持 AWS帳戶層級的保護。不過,移除此限制之後,請務必密切監控支出。

IndexWriteMaxOnDemandThroughputExceeded

發生這種情況時

基底資料表中項目的更新會在隨需模式下觸發寫入 GSI,超過 GSI 設定的寫入輸送量容量上限,導致背壓限流。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。

修復選項

請考慮這些步驟來處理您的限流事件:

  • 提高 GSI 輸送量上限:使用 DynamoDB 主控台AWS CLI或 DynamoDB UpdateTable API 來增加受影響 GSI MaxWriteRequestUnits的值,然後監控和調整。

  • 移除 GSI 上限:將 GSI -1 MaxWriteRequestUnits設定為 以移除上限,允許根據帳戶層級輸送量配額的需求進行擴展。這會移除您的自訂限制,但仍維持 AWS帳戶層級的保護。不過,移除此限制之後,請務必密切監控支出。

常見診斷和監控

當對隨需輸送量超過限流事件進行故障診斷時,數個 CloudWatch 指標有助於識別根本原因和擴展模式。

基本 CloudWatch 指標

監控這些關鍵指標,以診斷超出限流的隨需最大輸送量:

分析方法

請依照下列步驟確認隨需輸送量超過診斷上限:

  1. 將耗用容量與最大容量限制進行比較 - 檢查耗用量是否一致接近或超過最大限制。

  2. 檢閱調節事件頻率和時間,以識別模式。尋找與調節事件相符的消耗容量突然增加。

  3. 使用 CloudWatch Contributor Insights 來識別哪些項目或分割區索引鍵耗用最多容量。