我正在为我的应用程序使用aws lamda函数以及dynamodb和api网关
并使用Apache Bench进行负载测试,我已经成功运行了测试
这是结果
并发级别:100
测试时间:0.920秒
完整请求:1000
失败的请求:0
每秒请求:1086.60 [#/ sec](平均)
每个请求的时间:0.920 [ms](在所有并发请求中的平均值)
此后,我添加了DAX(dynamodb加速器)以将响应时间减少到预期的微秒
但是我得到了相同的结果
并发级别:100
测试时间:0.853秒
完整请求:1000
失败的请求:0
每秒的请求:1172.12 [#/ sec](平均)
每个请求的时间:0.853 [ms](所有并发请求中的平均值)
答案 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发出许多请求时,延迟的改善才会显着。