带有 SQS 的 Lambda 函数 - 并发函数甚至没有接近极限

问题描述 投票:0回答:1

我注意到许多其他问题都在谈论 lambda 并发性,但似乎没有一个与我的问题完全相同,所以这是一个新问题:

我有一个当前的 lambda 函数,它使用采用 SQS 触发器的 python 请求。我有一个预留的并发限制集,但是在测试触发 1000 个 SQS 触发器的代码时,只有 1 或 2 个函数实例运行。

SQS触发设置如下:

Activate trigger: No;
Batch size: 1000;
Batch window: 100;
Concurrent batches per shard: None;
Last processing result: None;
Maximum age of record: None;
Maximum concurrency: 800;
On-failure destination: None;
Report batch item failures: Yes;
Retry attempts: None;
Split batch on error: None;
Starting position: None;
Tumbling window duration: None;

lambda并发设置如下:

Function concurrency:
Use reserved concurrency;
Reserved concurrency:
800;

lambda函数的一般配置如下:

Memory:
128MB;
Ephemeral storage:
512MB;
Timeout:
15min0sec;
SnapStartInfo:
None;

SQS 函数设置为使用死信队列,但没有到达那里。据我所知,这些消息在飞行中停滞不前,然后似乎消失了。 Lambda 在测试我的脚本时最多运行 6 个并发执行,但通常是 2 个左右,其中 1 个失败。

我使用 boto3 使用 python 脚本将消息发送到 SQS。我知道这些可以正确到达 SQS,因为运行代码后收到的消息指标显示约为 1000。

如果有人有任何想法,请分享。我完全不知所措。

amazon-web-services aws-lambda amazon-sqs
1个回答
0
投票

注意到@jarmod 注意到批量大小问题确实是问题所在!将批量大小更改为 1,问题就解决了!

© www.soinside.com 2019 - 2024. All rights reserved.