簡體   English   中英

如何以秒為單位監控 Lambda 並發執行(或找到更好的解決方案來限制 Lambda 並發執行)?

[英]How Could I Monitor Lambda Concurrent Executions on a Second-by-Second Basis (or Find a Better Solution to Limit Lambda ConcurrentExecutions)?

我正在 AWS Lambda 內構建的大型分布式計算平台上工作。該平台非常尖銳,所以大多數時候 ConcurrentExecutions 的數量低於 50,但我們可以達到最大值(目前為 1000)達一個小時或更長時間,如果一個大批量作業命中系統(它是一個事件驅動的系統)。 這是一個問題,因為我們將擁有非常滯后的面向客戶的 API。 最后,我不是架構師,所以我對系統的設計方式幾乎沒有控制權,但有人要求我 devise 一個聰明的並發執行限制解決方案

我不是 AWS 的新手,所以我知道處理這個問題的標准方法。 #1 是面向用戶的 lambda 的保留並發。 為了這個練習,我不允許這樣做(盡管我會 go 告訴我的老板那是必要的,如果確實如此)。 我在考慮一個系統,我們在其中指定高優先級(用於 UI)和低優先級函數(用於批處理),低優先級函數將檢查來自 Cloudwatch 的存儲(DynamoDB)值 output 當前的並發執行數. 如果低優先級 function 發現我們有使用所有 ConcurrentExecutions 的危險,它將發布到一個隊列,並使用指數退避。 這一切都應該有效,除了 ConcurrentExecutions 僅以一分鍾的增量進行監控的問題,這太慢了,因為我們的許多 Lambda 運行大約 500 毫秒。

所以我的問題如下:

  1. 有沒有一種方法可以設置具有逐秒數據點的自定義 ConcurrentExecutions 指標,如果可以,您會怎么做?

  2. 有沒有比 Cloudwatch 更好的方法來實現計數器?

  3. 我只是在這里遺漏了什么,有人有一個聰明的方法來管理 Lambda ConcurrentExecutions

我認為根本沒有必要創建監視器或節流解決方案。 您將需要構建測試並維護核心解決方案的一些額外內容。 相反,兩個建議:

聽起來當前的設計有一個 lambda function 做得太多了。 進一步分解 Lambda,這樣您就可以將 Lambda 拆分為一個 Ui/public lambda,以及一個或多個專用於批處理的過程。 通過這種方式,您可以將並發執行限制分散到更多 Lambda 中。 該限制是每 Lambda function。

二、請求增加服務配額/限制

要將限制提高到 1,000 次並發 function 執行,請按照我們文檔中的步驟向 AWS 支持中心提交請求。 可撥打Lambda的所有地區均可使用此功能。

請參閱 AWS Lambda 提高默認並發執行限制。 https://aws.amazon.com/about-aws/whats-new/2017/05/aws-lambda-raises-default-concurrent-execution-limit/

限制管理團隊在要求強奸限制時非常靈活,他們通常將其提高到我們的解決方案所需的任何合理數量。

要請求提高限制,請參閱https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM