為函數配置保留並發 - AWS Lambda

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

為函數配置保留並發

在 Lambda 中,並行是函數目前正在處理的傳輸中請求數目。有兩種類型的並行控制項可用:

  • 預留並行 – 它是分配給函數的並行執行個體數量上限。當某個函數具有預留並行時,其他函數都無法使用該並行。保留並發對於確保您最關鍵的函數始終具有足夠的並發性來處理傳入的請求非常有用。設定函數的預留並行不會產生額外費用。

  • 佈建並行 – 它是您分配給函數的預先初始化執行環境數目。這些執行環境已準備好立即回應傳入的函數請求。佈建的並行對於減少功能的冷啟動延遲很有用。設定已佈建的並行會產生額外費用給您的. AWS 帳戶

本主題詳細說明如何管理及設定預留並行。如需這兩種並行控制項的概念性概觀,請參閱預留並行與佈建並行。如需有關設定佈建並行的資訊,請參閱 設定函數的佈建並行

注意

連結至 Amazon MQ 事件來源映射的 Lambda 函數具有預設並行上限。若使用 Apache Active MQ,並行執行個體數量上限為 5 個。若使用 ARabbit MQ,並行執行個體數量上限為 1 個。為函數設定保留或佈建並行不會改變這些上限。若要在使用 Amazon MQ 時要求增加預設的並行上限,請聯絡 AWS Support。

設定預留並行

您可以使用 Lambda 主控台或 Lambda 為函數設定保留的並行設定。API

預留函數並行的方式 (主控台)
  1. 開啟 Lambda 主控台中的函數頁面

  2. 選擇要預留並行的函數。

  3. 選擇 Configuration (組態),然後選擇 Concurrency (並行)

  4. Concurrency (並行) 下,選擇 Edit (編輯)

  5. 選擇 Reserve concurrency (預留並行)。輸入要為函式預留的並行數量。

  6. 選擇 Save (儲存)。

您最多可以預留的數量為未預留帳戶並行數量減去 100 的值。剩餘的 100 個並行單位會用於未使用預留並行的函數。例如,如果您帳戶的並行上限為 1,000,則您無法為單一函數預留全部 1,000 個並行單位。

如果您嘗試預留過多的並行,系統就會發生錯誤。

為函數預留並行會影響其他函數可用的並行集區。例如,如果您為 function-a 預留 100 個並行單位,則帳戶中的其他函數必須共用剩餘的 900 個並行單位 (即使 function-a 未使用全部 100 個預留並行單位也一樣)。

若要刻意節流函數,請將其預留並行設為 0。此動作會防止函數處理任何事件,直到您移除限制為止。

若要設定 Lambda 的保留並行API,請使用下列API作業。

例如,若要使用 AWS Command Line Interface (CLI) 配置保留並行,請使用指put-function-concurrency令。下列命令會為名為 my-function 的函數預留 100 個並行單位:

aws lambda put-function-concurrency --function-name my-function \ --reserved-concurrent-executions 100

您應該會看到類似以下的輸出:

{ "ReservedConcurrentExecutions": 100 }

準確估算函數所需的保留並發

如果您的函數目前正在為流量提供服務,則可以使用指標輕鬆檢視其並行指CloudWatch 標。具體而言,ConcurrentExecutions 指標會顯示帳戶中每個函數的並行調用次數。

本圖顯示函數的並行隨時間變化的情形。

前一張圖表顯示此函數一天平均可處理 5 到 10 個並行請求,峰值時段則為 20 個請求。假設帳戶中還有很多其他函數。如果此函數對您的應用程式很重要,且您不想要捨棄任何請求,則請將預留並行設為 20 (或以上)。

或者,回想一下您也可以使用以下公式計算並行

Concurrency = (average requests per second) * (average request duration in seconds)

將每秒平均請求乘以平均請求持續時間 (以秒為單位),可讓您粗略估計需要預留多少並行。您可以使用 Invocation 指標來預估每秒平均請求數,並使用 Duration 指標預估平均請求持續時間 (以秒為單位)。如需詳細資訊,請參閱檢視 Lambda 函數的指標

您也應該熟悉上游和下游輸送量限制。雖然 Lambda 函數可隨負載進行無縫擴展,但上游和下游相依性可能不具有相同的輸送量能力。如果您需要限制函數可擴展的高度,請在函數上配置保留並發。