Dynamo Db Accelerator应该将响应时间减少到微秒

时间:2019-06-11 10:25:21

标签: node.js aws-lambda amazon-dynamodb-dax

我正在为我的应用程序使用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](所有并发请求中的平均值)

1 个答案:

答案 0 :(得分:0)

Lambda和API网关本身具有很大的开销,这可能占了85ms的大部分时间。 DAX唯一可以加速的部分是从DynamoDB读取。

例如,假设从DynamoDB进行常规读取(GetItem)花费2.5毫秒,而从DAX进行缓存的读取则花费500µs,而您的Lambda进行5个连续的GetItems。在这种情况下,DynamoDB将花费12.5毫秒,而DAX将需要2.5毫秒,从而在Lambda中节省了10毫秒的时间-但您仍然必须支付API网关和Lambda的费用,这很容易会超过50毫秒。

(如果您不熟悉Amdahl's Law,以了解性能优化的局限性,我建议您仔细阅读。)

在您的用例中使用DAX可能仍然有意义,因为它可能使您降低DynamoDB调配的吞吐量或按需请求,但是使用Lambda时,只有每个Lambda发出许多请求时,延迟的改善才会显着。