2 - 超過佈建輸送量 - Amazon DynamoDB

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

2 - 超過佈建輸送量

當您應用程式的耗用率超過為資料表或全域次要索引設定的讀取或寫入容量單位 (RCUs/WCUs) 時,就會發生佈建容量限流。雖然 DynamoDB 提供高載容量來處理偶爾的流量尖峰,但超出佈建限制的持續請求會導致限流。發生這種情況時,DynamoDB ProvisionedThroughputExceeded 會在調節例外狀況中傳回調節原因類型。原因會識別問題是否與讀取或寫入操作有關,以及是否會影響基底資料表或全域次要索引。

無論是否啟用 Auto Scaling,都會發生調節。Auto Scaling 會適應增加的耗用量,但不會立即回應,且受到您設定的最大容量限制限制。這表示當流量突然激增或消耗量超過 Auto Scaling 上限時,仍可能發生限流。

佈建輸送量超過緩解措施

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

在深入探討特定的限流案例之前,請先考慮限流是否實際上是需要解決的問題:

  • 在最佳化的 DynamoDB 應用程式中,偶爾限流是正常且預期的。限流只是表示您使用 100% 的佈建內容。如果您的應用程式使用重試來正常處理限流,且您的整體效能符合需求,則限流可能不需要立即採取動作。

  • 不過,如果調節造成無法接受的用戶端延遲、降低使用者體驗,或阻止關鍵操作及時完成,則繼續下面的緩解選項。

當您需要解決限流問題時,請先判斷限流是否由以下原因造成:

  • 暫時性流量激增:超過佈建容量但未持續的流量短時間增加。這些需要的策略與持續高流量不同。

  • 持續高流量:持續工作負載持續超過您佈建的容量。

對於流量峰值,請考慮 中的使用 Amazon DynamoDB 佈建容量部落格處理流量峰值的策略其他資源

對於持續高流量,請考慮以下容量調整選項:

TableReadProvisionedThroughputExceeded

發生這種情況時

應用程式的讀取耗用率超過為資料表設定的佈建讀取容量單位 RCUs)。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。

解決方法

請考慮這些策略來解決讀取容量調節:

TableWriteProvisionedThroughputExceeded

發生這種情況時

應用程式的寫入耗用率超過為資料表設定的佈建寫入容量單位 WCUs)。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。

解決方法

考慮這些策略來解決寫入容量限流:

IndexReadProvisionedThroughputExceeded

發生這種情況時

全域次要索引 (GSI) 上的讀取耗用量超過 GSI 佈建的讀取容量單位 RCUs)。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。

解決方法

請考慮這些策略來解析 GSI 讀取容量調節:

IndexWriteProvisionedThroughputExceeded

發生這種情況時

基底資料表中項目的更新會觸發寫入超過 GSI 佈建寫入容量的 GSI。這會導致基底資料表寫入的背壓限流。您可以在 中監控 CloudWatch 指標常見診斷和監控,以分析限流事件。

解決方法

考慮這些策略來解決 GSI 寫入容量限流:

常見診斷和監控

疑難排解輸送量錯誤時,數個 CloudWatch 指標有助於識別根本原因。

基本 CloudWatch 指標

監控這些關鍵指標以診斷佈建的容量限流:

解決程序

增加資料表輸送量

當 Auto Scaling 未啟用且您需要立即增加容量時,請使用此程序。

  1. 使用 DynamoDB 主控台或 SDK AWS CLI更新資料表的佈建容量:

    • 對於讀取容量:增加 ReadCapacityUnits 參數,指定在 DynamoDB 調節請求之前每秒消耗的強式一致讀取數目上限。

    • 對於寫入容量:增加 WriteCapacityUnits 參數,指定 DynamoDB 調節請求之前每秒消耗的最大寫入數。

  2. 確認您的新容量設定未超過每個資料表輸送量配額,而且您的帳戶總用量仍低於您區域的每個帳戶輸送量配額。如果您接近這些限制,請考慮改為切換到隨需容量模式

設定資料表 Auto Scaling 以調整資料表或 GSI 的讀取或寫入容量

設定 DynamoDB Auto Scaling,根據流量模式自動調整讀取或寫入容量。您可以針對資料表和 GSIs 獨立設定 Auto Scaling,並分別控制讀取和寫入容量單位。

  1. 針對資料表或 GSI 上的讀取容量、寫入容量或兩者,啟用 Auto Scaling。

  2. 設定目標使用率百分比,以及流量尖峰的標頭空間。

    注意

    較低的目標使用率會增加成本和擴展頻率。低於 40% 的目標可能會導致過度佈建。監控用量模式和成本,以平衡效能和效率。

  3. 設定容量界限:

    • 最小 RCUs/WCUs:在低流量期間維持足夠的容量。

    • 最大 RCUs/WCUs:適應尖峰流量需求,並防止失控擴展事件。

如需設定和管理 DynamoDB Auto Scaling 的指引,請參閱使用 DynamoDB Auto Scaling 自動管理輸送量容量

注意

Auto Scaling 通常需要幾分鐘的時間來回應流量變更。對於流量突增,資料表的爆量容量可在 Auto Scaling 調整時提供立即保護。設定具有足夠空間的目標使用率,以允許擴展操作的時間,並為非預期的需求保留高載容量。

最佳化資料表或索引的讀取或寫入 Auto Scaling 設定

啟用 Auto Scaling 但限流仍然發生時,請使用此程序。您可以針對資料表和全域次要索引 (GSIs) 獨立調整 Auto Scaling,並分別控制讀取和寫入容量單位。

  • 調整目標使用率:考慮降低資料表或 GSIs 的目標使用率,以在調節發生之前提早觸發擴展。進行這些調整後,請務必監控流量。如需容量耗用量和成本影響的詳細資訊設定資料表 Auto Scaling 以調整資料表或 GSI 的讀取或寫入容量,請參閱 。

  • 檢閱容量界限:確保您的容量設定下限和上限符合您的實際工作負載模式。

切換到隨需容量模式

如需切換容量模式的一般資訊,請參閱 在 DynamoDB 中切換容量模式時的考量事項。請參閱 Service Quotas,以了解切換模式時的特定限制條件。

增加 GSI 輸送量

當您的 GSI 上未啟用 Auto Scaling,或您需要立即增加容量時,請使用此程序。

  1. 使用 DynamoDB 主控台或 SDK AWS CLI更新 GSI 的佈建容量:

    • 對於讀取容量:增加特定 GSI 的 ReadCapacityUnits 參數,指定在 DynamoDB 調節請求之前,GSI 每秒可耗用的讀取數目上限。請注意,GSIs僅支援最終一致讀取。

    • 對於寫入容量:增加特定 GSI 的 WriteCapacityUnits 參數,指定在 DynamoDB 調節請求之前,GSI 每秒可耗用的寫入次數上限。

  2. 確保 GSI 的佈建輸送量保持在每個帳戶和每個資料表的輸送量配額內。

其他資源