0

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

4

1 回答 1

0

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 发出许多请求时,延迟改进才会明显。

于 2019-06-12T15:23:27.587 回答