node.js - 为什么并发 lambda 请求延迟启动?
问题描述
我正在使用 Charlesproxy 在 AWS Lambda 上运行负载测试,但对生成的时间表图表感到困惑。我已经设置了一个包含 100 个并发连接的测试,并预计会有不同程度的延迟,但预计会同时启动所有 100 个请求(因此 charlesproxy 重复高级功能中的并发设置),但我看到一些请求开始了有点晚了...如果我正确理解图表的话。
只有 100 次调用,我应该在 AWS Lambda 设置的最大并发数范围内,那么为什么这些请求会延迟启动(请参阅附加图像上的请求 55 - 62)?
解决方案
当 Lambda 处于“冷态”时,它可能需要几百毫秒到 1-2 秒才能启动。冷意味着它需要下载你的包,解包,加载到内存中,然后开始执行你的代码。执行后,此容器会保持“活动”状态约 5 到 30 分钟(“温暖状态”)。如果你在它温暖的时候再次请求,容器启动会快得多。
开始测试时,您可能已经有几个容器已经暖和了。那些启动得更快。由于其他请求同时出现,Lambda 需要启动更多容器,而这些容器来自“冷状态”,因此您在图表中看到了时间差。
推荐阅读
- matlab - 在图中定义多个点,matlab
- javascript - Javascript。从数组输出对象的内置函数时输出奇怪
- javascript - 坚持将变量添加到 Discord Client 对象 Typescript
- laravel - 如何从 Laravel 中的 url 传递动态变量
- android - 单击时按钮隐藏,结果显示在android studio中
- javascript - 如何更改构造函数的值?
- mongodb - MongoDB 快速计算子文档 - 可能是低谷索引
- javascript - 如何在脚本标签中转义 JSON 数据?
- c# - 通过在较小的相同对象列表上使用 foreach 来更改对象列表中的对象
- macos - 无法在 macbook pro 上卸载内置键盘(kext 卸载)