我正在用Java创建AWS Lambda函数来访问DynamoDB表。我注意到AmazonDynamoDBClent实例化有时需要几秒钟 - 通常在我没有调用我的lambda函数一段时间之后。
通常意味着当我连续向我的Lambda发送多个请求时,我等待大约10秒钟进行第一次响应,小于等待任何后续呼叫。这不是一个规则 - 中间的某些请求有时也很慢。
我尝试了几个带或不带参数的AmazonDynamoDBClent,并没有看到任何差异。
任何提示如何摆脱这种延迟?有什么配置DynamoDB?拉姆达?
答案 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函数中的设置时间: