【发布时间】:2015-11-23 07:16:11
【问题描述】:
我在同一区域 (us-east-1) 中有 lambda 函数和 dynamo db 表。在 lambda 函数中,我执行非常简单的查询:
params =
TableName: 'users'
Item:
email:
S: event.body.email
ConditionExpression: 'attribute_not_exists (email)'
dynamodb.putItem(params, context.done)
DynamoDB 表中只有几行,电子邮件上有哈希键,读/写吞吐量设置为 5/5。
Lambda 函数在约 4 秒内执行...这非常慢。我做错了吗?
我已经用不同的内存设置为 lambda 函数测试了我的函数(之前设置为 128mb):
- 256mb => ~2000ms
- 512mb => ~1000ms
- 1024mb => ~500ms
- 1536mb => ~300ms
因此,响应时间似乎 1-1 取决于内存(实际上取决于计算容量,因为 AWS 将其与内存一起扩展)。这仍然很疯狂,因为要制作非常简单的 REST API,我必须设置 1536mb 内存以使其“响应”,而我的程序使用 17mb!
另一方面,我已经计算出它会花费:
- 使用 128mb 内存的每 100 万个 4000 毫秒请求 8.32 美元
- 使用 1536mb 内存的每 100 万个 300 毫秒请求 10.004 美元
所以我猜这还不错......
【问题讨论】:
-
您确定没有在您的 Lambda 函数中执行任何其他操作吗?简单的 JS 调用不应该需要那么多内存,也不应该花费那么多时间。
-
只是为了比较,如果你使用 SimpleDB,你会得到什么样的性能?
-
您找到解决方案了吗?我面临着类似的问题,我在我的 lambda 函数中使用批量写入,并且花费的时间太长。此外,该功能几乎不使用 80MB 内存,因此增加内存以获得更好的性能对我来说似乎不太合适。
-
物有所值; Lambda 配置对话框指出“您的函数分配的 CPU 与配置的内存成正比” - 看起来 AWS 在您配置更多内存时也会为您提供更多 CPU...
-
我正在使用索引从包含 5 个条目的表中进行简单查找。 128MB RAM 的响应时间为 16 秒!添加更多内存也会按比例减少延迟,但这仍然是巨大的延迟!
标签: amazon-web-services amazon-dynamodb aws-lambda