擴展 Lambda 受管執行個體 - AWS Lambda

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

擴展 Lambda 受管執行個體

當呼叫到達時,Lambda 受管執行個體不會擴展,也不支援冷啟動。反之,它會使用資源消耗訊號以非同步方式擴展。受管執行個體目前會根據 CPU 資源使用率和多並行飽和度進行擴展。

主要差異:

  • Lambda (預設):在沒有免費執行環境來處理傳入調用時擴展 (冷啟動)

  • Lambda 受管執行個體:根據執行環境的 CPU 資源使用率和多並行飽和,以非同步方式擴展

如果您的流量在 5 分鐘內增加一倍以上,您可能會在 Lambda 擴展執行個體和執行環境以滿足需求時看到調節。

擴展生命週期

Lambda 受管執行個體使用分散式架構來管理擴展:

元件:

  • 受管執行個體 - 在您提供的子網路中於您的帳戶中執行

  • Router and Scaler - 路由呼叫和管理擴展的共用 Lambda 元件

  • Lambda 代理程式 - 在每個受管執行個體上執行,以管理執行環境生命週期並監控資源消耗

運作方式:

  1. 當您使用容量提供者發佈函數版本時,Lambda 會在您的帳戶中啟動受管執行個體。根據預設,它會針對 AZ 彈性啟動三個 ,並在標記函數版本 ACTIVE 之前啟動三個執行環境。

  2. 每個受管執行個體都可以針對映射至相同容量提供者的多個函數執行環境。

  3. 隨著流量流入您的應用程式,執行環境會耗用 資源。Lambda 代理程式會通知 Scaler,以決定是否擴展新的執行環境或受管執行個體。

  4. 如果 Router 嘗試將呼叫傳送至資源消耗較高的執行環境,則該執行個體上的 Lambda 代理程式會通知它在另一個執行個體上重試。

  5. 隨著流量減少,Lambda 代理程式會通知 Scaler,以決定縮減執行環境並縮減受管執行個體。

調整擴展行為

您可以透過四個控制項自訂受管執行個體的擴展行為:

函數層級控制項

1. 函數記憶體和 vCPUs

選擇函數的記憶體大小和 vCPU 配置。支援的最小函數大小為 2GB 和 1vCPU。

考量:

  • 挑選支援函數多並行執行的記憶體和 vCPU 設定

  • 您無法設定少於 1 個 vCPU 的函數,因為在受管執行個體上執行的函數應支援多並行工作負載

  • 您無法選擇小於 2GB,因為這符合 c 執行個體的 2 比 1 記憶體與 vCPU 比率,其比率最低

  • 對於 Python 應用程式,您可能需要選擇較高比率的記憶體與 vCPUs,例如 4 比 1 或 8 比 1,因為 Python 處理多並行的方式

  • 如果您執行 CPU 密集型操作或執行少量 IO,您應該選擇多個 vCPU

2. 並行上限

設定每個執行環境的並行上限。

預設行為:Lambda 選擇合理的預設值,以平衡適用於各種應用程式的資源消耗和輸送量。

調整準則:

  • 增加並行:如果您的函數調用使用極少的 CPU,您可以將並行上限提高到每個 vCPU 最多 64 個

  • 減少並行:如果您的應用程式耗用大量記憶體和極少 CPU,您可以減少並行上限

重要:由於 Lambda 受管執行個體適用於多並行應用程式,因此在擴展時,並行非常低的執行環境可能會遇到調節。

容量提供者層級控制

3. 目標資源使用率

選擇您自己的 CPU 使用率消耗目標。

預設行為:Lambda 維持足夠的空間,讓您的流量在 5 分鐘內加倍,無需調節。

最佳化選項:

  • 如果您的工作負載非常穩定,或者您的應用程式對調節不敏感,您可以將目標設定為高層級,以實現更高的使用率和更低的成本

  • 如果您想要維持高載流量的標頭空間,您可以將資源目標設定為低階,這將需要更多容量

4. 執行個體類型選取

設定允許或排除的執行個體類型。

預設行為:Lambda 會為您的工作負載選擇最佳的執行個體類型。我們建議您讓 Lambda 受管執行個體為您選擇執行個體類型,因為限制可能的執行個體類型數量可能會導致可用性降低。

自訂組態:

  • 特定硬體需求:將允許的執行個體類型設定為相容的執行個體清單。例如,如果您的應用程式需要高網路頻寬,您可以選取多個 n 個執行個體類型

  • 成本最佳化:對於測試或開發環境,您可以選擇較小的執行個體類型,例如 m7a.large 執行個體類型

後續步驟