本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
監控並行
Lambda 發出 Amazon CloudWatch 指標,協助您監控函數的並行。本主題將說明這些指標及其解譯方式。
一般並行指標
使用下列指標來監控 Lambda 函數的並行。每個指標的精細程度為 1 分鐘。
-
ConcurrentExecutions
– 在指定時間點的作用中並行調用數。Lambda 會針對所有函數、版本和別名發出此指標。對於 Lambda 主控台中的任何函數,Lambda 會在監控索引標籤的指標下以原生方式顯示ConcurrentExecutions
的圖表。使用 檢視此指標MAX。 -
UnreservedConcurrentExecutions
– 使用未預留並行的作用中並行調用數。Lambda 會針對區域中的所有函數發出此指標。使用 檢視此指標MAX。 -
ClaimedAccountConcurrency
– 無法用於隨需調用的並行數量。ClaimedAccountConcurrency
等於UnreservedConcurrentExecutions
加上配置並行的數量 (亦即預留並行總數加上佈建並行總數)。如果ClaimedAccountConcurrency
超過帳戶並行限制,您可以請求提高帳戶並行上限。使用 檢視此指標MAX。如需詳細資訊,請參閱使用 ClaimedAccountConcurrency 指標。
佈建並行指標
使用下列指標來監控使用佈建並行的 Lambda 函數。每個指標的精細程度為 1 分鐘。
-
ProvisionedConcurrentExecutions
– 目前使用佈建並行處理調用的執行環境執行個體數。Lambda 會針對已設定佈建並行的每個函數版本和別名發出此指標。使用 檢視此指標MAX。
ProvisionedConcurrentExecutions
與您配置的佈建並行總數不同。例如,假設您將 100 個佈建並行單位配置給函數版本。在任何指定分鐘內,如果這 100 個執行環境中最多有 50 個同時處理調用,則 MAX(ProvisionedConcurrentExecutions
) 的值為 50。
-
ProvisionedConcurrencyInvocations
- Lambda 使用佈建並行調用函數程式碼的次數。Lambda 會針對已設定佈建並行的每個函數版本和別名發出此指標。使用 檢視此指標SUM。
ProvisionedConcurrencyInvocations
與 ProvisionedConcurrentExecutions
不同,ProvisionedConcurrencyInvocations
計算調用總數,ProvisionedConcurrentExecutions
則計算作用中環境數。若要了解這種區別,請考慮以下案例:
在此範例中,假設您每分鐘收到 1 次調用,而且每次調用都需要 2 分鐘才能完成。每個橘色水平長條代表一個請求。假設您將 10 個佈建並行單位配置給此函數,這樣每個請求都會在佈建並行上執行。
在分鐘 0 和 1 之間,收到 Request 1
。第 1 分鐘時,MAX(ProvisionedConcurrentExecutions
) 的值為 1,因為過去一分鐘內最多有 1 個執行環境處於作用中狀態。SUM(ProvisionedConcurrencyInvocations
) 的值也是 1,因為過去一分鐘有 1 個新請求進來。
在分鐘 1 和 2 之間,收到 Request 2
,且 Request 1
繼續執行。第 2 分鐘時, MAX(ProvisionedConcurrentExecutions
) 的值為 2,因為過去一分鐘內最多有 2 個執行環境處於作用中狀態。不過, SUM(ProvisionedConcurrencyInvocations
) 的值為 1,因為過去一分鐘只有 1 個新請求進來。此指標行為會一直持續到範例結束為止。
-
ProvisionedConcurrencySpilloverInvocations
– 當所有佈建並行都在使用中時,Lambda 使用標準 (預留或未預留) 並行調用函數的次數。Lambda 會針對已設定佈建並行的每個函數版本和別名發出此指標。使用 檢視此指標SUM。ProvisionedConcurrencyInvocations
+ProvisionedConcurrencySpilloverInvocations
的值應等於函數調用總數 (即Invocations
指標)。ProvisionedConcurrencyUtilization
– 使用中佈建並行百分比 (即ProvisionedConcurrentExecutions
的值除以配置的佈建並行總數)。Lambda 會針對已設定佈建並行的每個函數版本和別名發出此指標。使用 檢視此指標MAX。
例如,假設您將 100 個佈建並行單位佈建給函數版本。在任何指定分鐘內,如果這 100 個執行環境中最多有 60 個同時處理調用,則 MAX(ProvisionedConcurrentExecutions
) 的值為 60,而 MAX(ProvisionedConcurrencyUtilization
) 的值為 0.6。
ProvisionedConcurrencySpilloverInvocations
的值偏高可能表示您需要為函數配置額外的佈建並行。或者,您可以設定 Application Auto Scaling,以根據預先定義的閾值來處理佈建並行的自動擴展。
相反地,ProvisionedConcurrencyUtilization
的值持續偏低可能表示您為函數配置過多佈建並行。
使用 ClaimedAccountConcurrency
指標
Lambda 會使用 ClaimedAccountConcurrency
指標來判斷您的帳戶可用於隨需調用的並行數量。Lambda 會使用以下公式計算 ClaimedAccountConcurrency
:
ClaimedAccountConcurrency = UnreservedConcurrentExecutions + (allocated concurrency)
UnreservedConcurrentExecutions
是使用未預留並行的作用中並行調用數目。配置的並行是下列兩個部分的總和 (以「預留並行」取代 RC
,以「佈建並行」取代 PC
):
-
區域中所有函數的
RC
總數。 -
區域中使用
PC
的所有函數的PC
總數,使用RC
的函數除外。
注意
您不能為一個函數配置多於 RC
的 PC
。因此,一個函數的 RC
總是大於或等於它的 PC
。對於同時具有 PC
和 RC
的函數,Lambda 在計算這些函數的配置並行比重時僅考慮 RC
,即兩者當中的較大值。
Lambda 會使用 ClaimedAccountConcurrency
指標來判斷可用於隨需調用的並行數量,而不使用 ConcurrentExecutions
。雖然 ConcurrentExecutions
指標對於追蹤作用中並行調用的數量很有用,但並不總是反映您真正的並行可用性。這是因為 Lambda 也會考慮預留並行和佈建並行來確定可用性。
為了說明 ClaimedAccountConcurrency
,請考慮一種情況,即您可以跨函數設定大量預留並行和佈建並行,但其中有很多未被使用。在下列範例中,假設您的帳戶並行限制為 1,000,而您的帳戶中有兩種主要的函數:function-orange
和 function-blue
。您為 function-orange
配置 600 個單位的預留並行。您為 function-blue
配置 200 個單位的佈建並行。假設隨著時間推移,您要部署額外的函數並觀測以下流量模式:
在上一張圖表中,黑線表示隨時間推移的實際並行使用,紅線表示隨時間推移的 ClaimedAccountConcurrency
值。在這種情況下,儘管函數的實際並行利用率較低,但 ClaimedAccountConcurrency
始終至少為 800。這是因為您為 function-orange
和 function-blue
配置了 800 個單位總數的並行。從 Lambda 的角度來看,您已經「聲明」這些並行供使用,因此對於其他函數,您實際上只剩下 200 個單位的並行。
針對這個情況,在 ClaimedAccountConcurrency
公式中配置的並行是 800。然後,我們可以在圖表的不同點衍生 ClaimedAccountConcurrency
值。
-
在
t1
,ClaimedAccountConcurrency
為 800 (800 + 0UnreservedConcurrentExecutions
)。 -
在
t2
,ClaimedAccountConcurrency
為 900 (800 + 100UnreservedConcurrentExecutions
)。 -
在
t3
,ClaimedAccountConcurrency
還是 900 (800 + 100UnreservedConcurrentExecutions
)。
在 ClaimedAccountConcurrency
中設定指標 CloudWatch
Lambda 在 中發出ClaimedAccountConcurrency
指標 CloudWatch。使用此指標和 SERVICE_QUOTA(ConcurrentExecutions)
的值取得有關您的帳戶的並行利用率百分比,如下方公式所示:
Utilization = (ClaimedAccountConcurrency/SERVICE_QUOTA(ConcurrentExecutions)) * 100%
下列螢幕擷取畫面說明如何在 中繪製此公式的圖形 CloudWatch。綠色 claim_utilization
線代表此帳戶中的並行利用率,約為 40%:
先前的螢幕擷取畫面也包含當並行使用率超過 70% 時進入 ALARM
狀態的 CloudWatch 警示。您可以使用 ClaimedAccountConcurrency
指標和類似的警示來主動確定您何時可能需要請求更高的帳戶並行上限。