我们已经使用AWS Lambda已有一段时间了,并启动了另一个Lambda流程,但是这次我们注意到有关Lambda的扩展方法和报告的错误率的一些意外行为。 我们有一个SQS-> Lambda设置,最大并发性为200,队列中大约有10万条消息,平均大约需要3秒来处理每个消息。根据控制台,Lambda的失败率约为5%-10%,这在当前方法中有望实现。不幸的是,我们看到的是Lambda最多只能执行约45-50次并发执行。我们调整了内存,超时,队列设置等,但没有任何效果。最终,我们让Lambda始终成功退出,并且可以肯定的是,它现在已立即达到最大并发性。 为什么是这样?在文档的任何地方都没有提到错误率与并发或伸缩行为有关。其他人有没有经历过? 作为某种对最终用户的安全保护措施,这是有道理的,但我们只是没想到。我们正在调整当前的方法以解释该理论。
tldr: Lambda的最大并发性为200,并由SQS触发 当错误率是5%-10%时,它将达到约45-50个并发执行 当错误率是0%时,它将达到完整的200个并发执行 为什么?
答案 0 :(得分:0)
正如约翰·罗滕斯坦(John Rotenstein)所说,这可能是由于重试。
从AWS Lambda Retry documentation起,您的AWS SQS服务触发器似乎已设置为在错误时重试。
博客文章https://dev.to/piczmar_0/error-handling-in-aws-lambda-trigger-by-sqs-events-3amp
中也有介绍答案 1 :(得分:0)
是的。 以前没有任何记录,但这也是我的经历。
在此处确认:https://aws.amazon.com/premiumsupport/knowledge-center/lambda-sqs-scaling/
如果Lambda尝试调用您的函数时出现任何错误, 该服务阻止您的功能扩展,以防止出现错误 规模。错误停止后,Lambda会继续扩大您的 功能。每分钟可扩展60个并发调用 只要您的帐户没有达到或接近扩展服务配额 或区域中的并发爆发。您的功能可以扩展到 最多1000个并发调用。