我想解決將大量資料寫入 Amazon Timestream for LiveAnalytics 資料表時發生的 ThrottlingException 錯誤。
簡短說明
當以下請求在特定時間範圍內超過配額時,您會收到「ThrottlingException」錯誤:
- 查詢
- Parameter Store (AWS Systems Manager 的一項功能) API 呼叫
- 作用中磁性儲存寫入
解決方法
查詢請求過多
當您超過查詢請求速率配額時,您會收到以下錯誤訊息:
「An error occurred (ThrottlingException) when calling the QueryOperation (reached max retries: 4): Request rate limit exceeded」。
**注意:**請求速率配額是動態的,並且取決於服務層級的整體資源使用情況。
如果您的查詢掃描的資料量超過必要範圍並導致多次分頁呼叫,請使用指標名稱或客戶定義的分區索引鍵來篩選不必要的資料。例如,如果您的查詢掃描整個資料表資料,請新增時間條件,讓查詢引擎移除不必要的資料掃描。最佳實務是將經常存取的索引鍵集合設定為資料表的分區索引鍵,讓 Timestream for LiveAnalytics 能有效管理內部分區。
若要最佳化基礎資料模型,請參閱資料模型設計。若要改善效能並降低延遲,請參閱查詢。
Parameter Store API 請求過多
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
當您在每個 AWS 帳戶與 AWS 區域中超過 Parameter Store API 請求配額時,您會收到以下其中一則錯誤訊息:
- 「An error occurred (ThrottlingException) when calling the GetParameters operation (reached max retries: 4): Rate exceeded.」
- 「An error occurred (ThrottlingException) when calling the GetParametersByPath operation (reached max retries: 4): Rate exceeded.」
- 「An error occurred (ThrottlingException) when calling the DescribeParameters operation (reached max retries: 2): Rate exceeded.」
若要降低 Parameter Store API 呼叫的頻率,請採取以下動作:
- 以交錯的時間間隔排程 API 呼叫。
- 使用可在單次呼叫中傳回多個值的 API。例如,GetParameters 與 GetParametersByPath 可在一次 API 呼叫中擷取最多 10 個參數。
- 在您的 API 呼叫中實作錯誤重試與指數退避。為了避免並行 API 呼叫,請在重試邏輯中納入抖動。為了在固定速率下更平均地分散請求尖峰並減少限流事件,請在退避中加入隨機間隔。
您可以修改程式碼,在每次呼叫之間加入 1 秒的暫停。AWS CLI 包含重試設定,您可以進行修改。例如,您可以將設定調整為在第一次重試前等待 50 毫秒、第二次重試前等待 100 毫秒,以及第三次重試前等待 200 毫秒。
如果您使用 AWS Lambda 對 Parameter Store 進行 API 呼叫,請實作參數快取。
若要實作批次處理,請將大型歷史資料集分割成較小且易於管理的批次。依據寫入請求配額以區塊方式處理資料。
作用中磁性儲存寫入請求過多
當您超過 250 個作用中磁性儲存寫入請求的配額時,您會收到以下錯誤訊息:
「An error occurred (ThrottlingException) when calling the WriteRecords operation (reached max retries: 5): Your magnetic store writes to Timestream for LiveAnalytics are throttled for this database.」
**注意:**當分區接收資料時,該分區在擷取程序完成後可能會維持作用中狀態長達 6 小時。
您無法提高 250 的配額。
如果 ActiveMagneticStorePartitions 指標超過 250,請採取以下動作:
- 降低應用程式並行寫入的不同資料序列數量。
- 縮短作用中磁性分區並行擷取資料的時間長度。例如,如果分區在一次作業中擷取 24 小時的資料,請將資料分割成較小的時間區塊。
- 使用批次寫入以降低可能發生的限流行為。
**注意:**當資料量很大時,最佳實務是建立批次載入作業。
如果您仍然收到磁性限流錯誤,且無效字母佇列 (DLQ) 接收到許多記錄,請找出正在發生磁性限流的資料表。針對高輸送量的擷取工作負載,請使用記憶體儲存。如需更多資訊,請參閱處理 WriteRecords 限流。