node.js - 负载测试 - 高并发 = 使用 Lambda 时的高延迟?
问题描述
我创建了一个从 DynamoDB 获取记录的 lamdba 函数。
现在我正在尝试获取有关架构性能的一些数字(这将在以后的迭代中启用 DAX)。
对于测试,我使用的是loadtest 包。下面是我的 2 个测试的详细信息
测试#1
AWS Lambda 配置
- 超时:30 秒
- 内存:1024 MB
- 预留并发:900
测试输入
- 最大请求数:1000
- 并发:100
测试结果
- 总请求数:1000
- 总时间秒数:15.028303200999997
- meanLatencyMs:1385.2
- 最大延迟时间:6536
- minLatencyMs:197
测试#2
AWS Lambda 配置
- 超时:30 秒
- 内存:1024 MB
- 预留并发:900
测试输入
- 最大请求数:1000
- 并发数:1000
测试结果
- 总请求数:1000
- 总时间秒数:19.298303200999997
- meanLatencyMs:8648.2
- 最大延迟女士:18749
- minLatencyMs:832
问题
- 当我将 lambda 函数的预留并发配置为运行 900 个并行实例时,为什么将并发级别从 100 更改为 1000 时平均延迟会增加这么多?
- 我是否缺少任何可以提高数字的 AWS 配置?
解决方案
测试 1 的请求数是并发执行的 10 倍,这有助于分摊任何冷启动的成本。另一方面,测试 2 的结果更差,因为测试 2 完全是冷启动。
现在,您的测试不一定是公平的比较(取决于您要测量的内容)。您可以尝试以 10 倍并发的请求数重复测试 2,看看您是否仍然获得与测试 1 相似的结果。
推荐阅读
- google-cloud-platform - 如何使用 Deployment Manager 将 IAM 策略设置为 Cloud Function
- python - 将数组写入文本文件,每行包含最大元素数
- node.js - 将 RoR 项目推送到服务器后,收到 Node.js 版本错误 [Buildpack 问题]
- python - 在 Windows 10 中为 python Web 服务创建 docker 映像
- matlab - 信号延迟混合的分离
- javascript - 在 mongodb 中查询时区分大小写
- reactjs - 在边框和图像之间添加空白:React Native
- jmeter - 根据条件在运行时动态增加 JMeter 线程
- java - 减少 SONAR 中表达式中使用的条件运算符 (4) 的数量(最多允许 3 个)
- ubuntu - Deno 作为 Linux systemd 服务。如何?