AWS re:Post Knowledge Center Feedback Survey
Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
我的 AWS Lambda 函式傳回「超過速率」和「TooManyRequestsException」限流錯誤。
限流錯誤可能不是由您的 Lambda 函式所引起的。在函式調用過程中,API 呼叫可能會發生限流。
若要確認哪些資源受到限流,請檢查您的 Amazon CloudWatch Logs 和指標是否有限流錯誤。如果沒有 Lambda 限流指標,則表示限流是發生在 Lambda 函式程式碼中的 API 呼叫上。
如果 API 呼叫受到限流,請確認您在程式碼中使用指數退避來重試 API 呼叫。
**注意:**如果您需要更高的每秒交易數 (TPS) 配額來進行 API 呼叫,則請求增加服務配額。並非所有配額都可調整。
檢查發生限流的 AWS 區域中,函式的 ConcurrentExecutions 指標。
檢視 ConcurrentExecutions 的上限統計資料和限流的總和統計資料。確認 ConcurrentExecutions 上限是否接近您在該區域中的帳戶層級並行數量配額,以及限流圖表中的相關資料點。
檢查您是否超過了函式所在區域的並行擴展率。您的並行擴充率為每 10 秒 1,000 個執行環境執行個體。如需詳細資訊,請參閱 Lambda 擴充行為。
在 CloudWatch 主控台中 Lambda 的指標頁面上,將圖表的時間範圍縮短為 1 分鐘。的限制,則會在圖表上看到與 ConcurrentExecutions 階梯模式對應的限流激增。
若要避免爆量並行限制,您可以設定佈建並行。您也可以請求增加 Lambda 函式的並行限制。
並行取決於函式持續時間。如果您的函式程式碼需要很長時間才能完成,那可能是因為運算資源不足。
檢閱執行日誌中的記憶體使用量上限欄位,並將該值與函式設定的記憶體設定進行比較。如果記憶體使用量上限接近設定的記憶體,表示您的函式通常受記憶體限制。如需詳細資訊,請參閱確定 Lambda 函式的適當記憶體設定。
確認您已為函式設定了預留並行。預留並行為函式設定了並行邊界,並且還可以保護函式免受其他可能消耗未預留並行的函式影響。雖然預留並行可以減少函式限流,但它也可能無意中對函式進行限流。
使用 Lambda 主控台 檢查預留並行的設定。如果未設定預留並行,則函式會使用未預留並行。當對函式的調用超過未預留並行時,會發生限流。
**注意:**如果您將函式設定為零預留並行,則該函式會因無法處理任何事件而受到限流。請務必將該值增加為大於零的數字。
若要設定或增加預留並行,請參閱設定函式的預留並行。若要對預留並行問題進行疑難排解,請參閱如何對 Lambda 預留並行問題進行疑難排解?
若要避免限流錯誤,請在進行 API 呼叫時使用指數退避並重試。最佳做法是在應用程式中對 Lambda 函數發出 API 呼叫時,採用指數退避。
如需詳細資訊,請參閱指數退避和抖動和重試行為。確認將您的 API 呼叫分散在一段時間中執行。使用隨機化排定動作,使其分散在一段時間中執行。
對於非同步事件來源 (例如 Amazon Simple Storage Service (Amazon S3) 和 Amazon EventBridge 排程器),請使用無效字母佇列設定函式。然後,驗證非同步調用組態的錯誤處理。死字母佇列會攔截因持續遭到限流而捨棄的事件,從而保護您的資料。
**注意:**對於 Amazon Simple Queue Service (Amazon SQS) 事件來源,您必須在 Amazon SQS 佇列上設定無效字母佇列。
如果您的工作負載需要更高的並行執行服務配額,則請求增加服務配額。
使用 Lambda 函式的最佳做法
對 Lambda 中的調用問題進行疑難排解
了解 Lambda 中的重試行為