从lambda函数对dynamodb的请求非常慢

时间:2015-08-28 15:08:12

标签: amazon-web-services amazon-dynamodb aws-lambda

我在同一区域(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表中只有几行,电子邮件上有Hash Key,读取/写入吞吐量设置为5/5。

Lambda函数在~4秒内执行...这非常慢。我做错了吗?

我用lambda函数的不同内存设置测试了我的函数(以前设置为128mb):

  • 256mb => 〜2000毫秒
  • 512mb => 〜1000毫秒
  • 1024mb => 〜500ms的
  • 1536mb => 〜300ms的

因此,似乎响应时间取决于内存(实际上在计算容量上,因为AWS会将其与内存一起扩展)。仍然这很疯狂,因为要制作非常简单的REST API,我必须设置1536mb内存以使其“响应”,而我的程序使用17mb!

另一方面,我已经计算出它会花费:

  • 8.32 $每1百万4000毫秒请求使用128mb内存
  • 10.004 $每1百万300毫秒请求使用1536mb内存

所以我猜不是那么糟糕......

1 个答案:

答案 0 :(得分:2)

好吧,问题也可能与取消暂停运行Lambda函数的容器有关。您还可能希望优化初始化对象的方式,以便每次调用函数时都不会重新初始化对象。

请参阅文章Container reuse in Lambda