node.js - Dynamo Db Accelerator 应该将响应时间减少到微秒
问题描述
我正在为我的应用程序使用 aws lamda 函数和 dynamodb 和 api 网关
并使用 Apache bench 进行负载测试,我已经成功运行了测试
1000 个请求和 100 个并发
这是结果
测试#1
并发级别:100
测试时间:0.920 秒
完成请求:1000
失败的请求:0
每秒请求数:1086.60 [#/sec](平均)
每个请求的时间:92.030 [ms](平均值)
每个请求的时间:0.920 [ms](平均值,所有并发请求)
之后,我添加了 DAX(dynamodb 加速器)以将响应时间减少到预期的微秒
但我得到了相同的结果
测试#2
并发级别:100
测试时间:0.853 秒
完成请求:1000
失败的请求:0
每秒请求数:1172.12 [#/sec](平均)
每个请求的时间:85.315 [ms](平均)
每个请求的时间:0.853 [ms](平均值,所有并发请求)
解决方案
Lambda 和 API Gateway 本身就有很大的开销,这可能占了 85 毫秒的大部分时间。DAX 可以加速的唯一部分是从 DynamoDB 读取。
例如,假设从 DynamoDB 进行常规读取 (GetItem) 需要 2.5 毫秒,从 DAX 进行缓存读取需要 500 微秒,而您的 Lambda 会执行 5 个连续的 GetItem。在这种情况下,DynamoDB 需要 12.5 毫秒,DAX 需要 2.5 毫秒,在 Lambda 中节省了 10 毫秒的时间——但您仍然需要支付 API 网关和 Lambda 的成本,这很容易超过 50 毫秒。
(如果您不熟悉Amdahl 定律,我建议您阅读它以了解性能优化的局限性。)
将 DAX 用于您的用例可能仍然有意义,因为它可以让您降低 DynamoDB 预置吞吐量或按需请求,但是在使用 Lambda 时,只有在每个 Lambda 发出许多请求时,延迟改进才会明显。
推荐阅读
- sql - 甲骨文:日期为半年
- wpf - WPF:自动截断 RadRichTextBox 中的文本
- css - Flexbox 最小宽度在 IE 11 中被破坏
- android - 方向在 BottomNavigationView 片段的回收器视图中不起作用。在哪里设置方向属性?
- r - 即使没有该间隙的记录,也要进行图表折线
- r - 可视化 iGraph 和标签对齐
- angular - 没有点的德语日期本地化?
- javascript - 具有multipleseries的Highcharts柱形图
- image-processing - 启用 OpenCL 后无法在 Magick++ 中使用 GPU
- wordpress - 使用 .htaccess 在 Wordpress 上隐藏 URL 参数