首页 > 解决方案 > 为什么并发 lambda 请求延迟启动?

问题描述

我正在使用 Charlesproxy 在 AWS Lambda 上运行负载测试,但对生成的时间表图表感到困惑。我已经设置了一个包含 100 个并发连接的测试,并预计会有不同程度的延迟,但预计会同时启动所有 100 个请求(因此 charlesproxy 重复高级功能中的并发设置),但我看到一些请求开始了有点晚了...如果我正确理解图表的话。

只有 100 次调用,我应该在 AWS Lambda 设置的最大并发数范围内,那么为什么这些请求会延迟启动(请参阅附加图像上的请求 55 - 62)?

请求 + 响应时间

标签: node.jsaws-lambdacharles-proxy

解决方案


当 Lambda 处于“冷态”时,它可能需要几百毫秒到 1-2 秒才能启动。冷意味着它需要下载你的包,解包,加载到内存中,然后开始执行你的代码。执行后,此容器会保持“活动”状态约 5 到 30 分钟(“温暖状态”)。如果你在它温暖的时候再次请求,容器启动会快得多。

开始测试时,您可能已经有几个容器已经暖和了。那些启动得更快。由于其他请求同时出现,Lambda 需要启动更多容器,而这些容器来自“冷状态”,因此您在图表中看到了时间差。


推荐阅读