我正在为我的应用程序使用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
发布于 2019-06-12 23:23:28
Lambda和API Gateway本身有很大的开销,这可能占了85ms的大部分。DAX唯一可以加速的部分是从DynamoDB读取数据。
例如,假设从DynamoDB进行常规读取(GetItem)需要2.5ms,从DAX进行缓存读取需要500µs,而您的Lambda执行5次顺序GetItems。在这种情况下,DynamoDB将需要12.5ms,DAX将需要2.5ms,在Lambda中节省10ms的时间-但您仍然需要支付API网关和Lambda的成本,这很容易成为50+ ms。
(如果您不熟悉Amdahl's Law,我建议您阅读它以了解性能优化的局限性。)
在您的用例中使用DAX可能仍然有意义,因为它可以让您减少DynamoDB配置的吞吐量或按需请求,但当使用Lambda时,只有在每个Lambda发出许多请求时,延迟改进才会显着。
https://stackoverflow.com/questions/56541641
复制相似问题