gpt4 book ai didi

node.js - 为什么只有 50 个实例在 AWS lambda 上运行?

转载 作者:搜寻专家 更新时间:2023-11-01 00:27:18 25 4
gpt4 key购买 nike

我正在使用 context.logStreamName 来识别 lambda 实例。并发设置为未保留。但它的日志显示只有 50 个实例在工作。

我是否误解了 logStream(pre logStream pre instance)?我从 this blog 得到了信息

下面是我对应的代码:

let instances = {};
for (let i = 0; i < each_invokes; i++) {
lambda.invoke(params, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
// console.log(data);
let logs = Buffer.from(data.LogResult, 'base64').toString('utf8');
let instanceID = logs.match(new RegExp("\\$InstanceID: (.*?) \\$END", "ig"))[0].split(" ")[1];
if (instanceID) {
if (instances.hasOwnProperty(instanceID)) {
instances[instanceID] += 1
} else {
instances[instanceID] = 0
}
console.log(instanceID, instances[instanceID], 'StatusCode:', data.StatusCode);
} else {
console.log('missing instanceID:', data.StatusCode)
}
}
console.log(Object.keys(instances).length)
});
}

我在我的 lambda 函数上 console.log(context.logStreamName) 并使用 RegExp 扭曲实例 ID。

尾日志不断显示以下输出:

b4afda96edf04e07ab819589d298521d 3 StatusCode: 200
50
a1ef1f4b518d47398daedda434ddd48c 3 StatusCode: 200
50
8dedc647796545ada94770895a8b190a 3 StatusCode: 200
50
7c4f48d72de0486e86e47c76ed3269ec 3 StatusCode: 200
50
2aa1f0dc9b0440fcac3d3127d123edb8 3 StatusCode: 200
50
3d1abeb38e7a45a4b933b669ad0c12d7 3 StatusCode: 200
50
531883ce26ac43b9bb0976726a2e5aa6 3 StatusCode: 200
50
cb9d0611a2e24244bd9ee98967a768c2 3 StatusCode: 200
50

那么这是否意味着 AWS lambda 只能运行 50 个实例?如果是,我该如何增加 AWS Lambda 中的并发计数?

最佳答案

除了 1000 并发执行的软限制外,还有其他事项需要考虑。

如果您使用 lambda 函数来处理不基于轮询的事件,那么您可以在单个时刻运行的函数的实际数量不是 1000。计算该数量的公式是

每秒调用次数 * 以秒为单位的平均执行持续时间

这意味着如果您的函数平均需要 20 秒来执行,那么您可以同时运行的该函数的实例数为 1000/20,即 50。

我并不是说您的代码就是这种情况,但在使用 lambda 限制时绝对需要考虑这一点。

如果我们谈论基于轮询的函数(Lambda 与 Kinesis 流、DynamoDB 流集成),那么另一个发挥作用的是流中的分片数量。流中的每个分片一次最多可以由特定 lambda 函数的 1 个实例处理(请注意,不同的 lambda 函数可以同时处理同一个分片)。因此,如果您的流中有 50 个分片,那么您的 lambda 函数最多可以扩展到它的 50 个实例,但是上面提到的公式仍然成立,因此如果您的函数处理消息的时间超过 20 秒,那么并发执行的数量将为少于 50 个。

关于node.js - 为什么只有 50 个实例在 AWS lambda 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com