簡體   English   中英

計算並發Lambda函數執行的次數

[英]Counting the number of concurrent Lambda function executions

根據AWS文檔的說明,默認情況下,每個帳戶一次可以執行1000個並發Lambda函數。 當然,這是一個軟限制,可以根據請求進行更改。

現在,我的問題是無論如何您如何監視並發的Lambda函數執行?

我假設這應該(使用某種方式)使用CloudWatch完成。 在CloudWatch的“ 指標”部分中,遵循以下路徑:

All > Lambda > Across All Functions

您可以通過名稱ConcurrentExecutions查找度量。 我敢打賭,但與此同時,我沒有根據我做過的測試得出數字。 在我們到達那里之前,該指標在圖表上顯示的值不是整數,因此我想我在這里遺漏了一些東西。 但這很好。 讓我告訴您我已經進行的測試。

我在這樣的EC2實例上創建了一個簡單的NodeJs腳本:

const AWS = require('aws-sdk');
const https = require('https');

const sslAgent = new https.Agent({
    keepAlive: true,
    maxSockets: 200,
    rejectUnauthorized: true,
});
sslAgent.setMaxListeners(0);

AWS.config.update({
    region: 'us-east-1',
    httpOptions: {
        agent: sslAgent,
    },
});


const lambda = new AWS.Lambda();

function call() {
    return lambda.invoke({
        FunctionName: "test",
        Payload: JSON.stringify({
            wait: 5000,
        }),
    }).promise();
}

(async () => {
  let start = Date.now();
  const promises = [...Array(200).keys()].map(i => {
    return call(new Date(Date.now()).toISOString())
      .then(data => {
        console.log(`Success (${i})`);
      })
      .catch(err => {
        console.log(`Error (${i}): ${err}`);
      });
  });
  await Promise.all(promises);
  let end = Date.now();
  console.log((new Date(end - start).toISOString()).substr(11, 12));
})();

該腳本將調用Lambda函數(稱為test )200次,而無需等待單個調用返回。 在服務器端,我在Lambda函數中具有以下代碼:

exports.handler = async (event, context, callback) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return new Promise((resolve) => {
        setTimeout(() => {
            callback(null, response);
            resolve();
        }, event.wait);
    });
};

此Lambda函數將使調用者在輸入所經過的時間中保持掛起狀態(在這種情況下為5秒)。 我運行了此測試,並驗證了同時運行200個Lambda函數實例。 我通過轉到CloudWatch並查看生成的日志來驗證了這一點,並生成了200個日志流(每個執行都有一個單獨的日志流)。

但是,當我提到上述Metric時,該圖僅顯示68.7 ,首先顯示的是一個奇異的數字,其次不是200。那么這個數字是什么,我在哪里可以找到200?

通過向AWS支持人員詢問相同的問題,我得到了答案。 在CloudWatch中,當您選擇一個指標時,它將看起來像這樣:

在此處輸入圖片說明

以前,我完全錯過了指標的“統計”列。 顯然,您在這里有不同的選擇,可以幫助我找到並發執行次數的選擇是Maximum

暫無
暫無

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

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