AmazonDynamoDBClent实例化延迟

时间:2015-11-10 12:54:29

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

我正在用Java创建AWS Lambda函数来访问DynamoDB表。我注意到AmazonDynamoDBClent实例化有时需要几秒钟 - 通常在我没有调用我的lambda函数一段时间之后。

通常意味着当我连续向我的Lambda发送多个请求时,我等待大约10秒钟进行第一次响应,小于等待任何后续呼叫。这不是一个规则 - 中间的某些请求有时也很慢。

我尝试了几个带或不带参数的AmazonDynamoDBClent,并没有看到任何差异。

任何提示如何摆脱这种延迟?有什么配置DynamoDB?拉姆达?

1 个答案:

答案 0 :(得分:0)

定期执行NO-OP将有助于保持Lambda功能的温暖。由newrelic执行的Measurements建议以1到10分钟的间隔调用函数足以避免频繁的冷启动。 New containers may be used即使您的功能因负载而变热也是如此。

其他寻找延迟改进的地方包括Lambda函数的CPU /内存占用量,可执行程序包的大小,运行时和其他无害的网络请求。

AWS forum上的交互和上面的新文章表明,增加Lambda函数容器的CPU /内存大小是另一种控制和减少延迟的好方法。

在构建zip / jar时,您是依赖于整个SDK还是仅依赖DynamoDB SDK?尽可能淘汰最小包装的不需要的依赖项。此外,如果从库中只需要一个函数,那么积极地向后移植代码是减少包大小的另一种方法。

如果您的应用程序允许,您可能会遇到使用Python和NodeJS运行时的较低延迟。

最后,您是否尝试从其他服务(如S3中的文件)读取lambda的配置,您可以采取以下步骤来减少lambda函数中的设置时间:

  1. 将配置烘焙到lambda函数中,如果它很少变化,或者你有一组有限的小组合来处理
  2. 重构您的处理程序以从InputStream有效内容中读取更多配置
  3. 使用Lambda环境变量管理配置。