Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AmazondynamodBlent实例化延迟_Java_Amazon Web Services_Lambda_Amazon Dynamodb - Fatal编程技术网

Java AmazondynamodBlent实例化延迟

Java AmazondynamodBlent实例化延迟,java,amazon-web-services,lambda,amazon-dynamodb,Java,Amazon Web Services,Lambda,Amazon Dynamodb,我正在用Java创建AWS Lambda函数来访问DynamoDB表。我注意到AmazonDynamoDBClent实例化有时需要几秒钟——通常是在我有一段时间没有调用lambda函数之后 通常情况下,当我连续向Lambda发送多个请求时,我会等待大约10秒的第一个响应,然后等待不到一秒的任何后续调用。但这并不是一个规则——有时中间的一些请求也很慢。 我尝试了几个AmazonDynamoDBClent,有没有参数,没有发现任何区别 有没有关于如何消除这种延迟的提示?有什么要用DynamoDB配置

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

通常情况下,当我连续向Lambda发送多个请求时,我会等待大约10秒的第一个响应,然后等待不到一秒的任何后续调用。但这并不是一个规则——有时中间的一些请求也很慢。

我尝试了几个AmazonDynamoDBClent,有没有参数,没有发现任何区别


有没有关于如何消除这种延迟的提示?有什么要用DynamoDB配置的吗?Lambda?

定期执行NO-OP将有助于使Lambda功能保持温暖。由newrelic执行的操作表明,每隔1到10分钟调用函数就足以避免频繁的冷启动。即使您的函数对负载的响应是热的

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

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

在构建zip/jar时,您是依赖于整个SDK还是仅依赖于DynamoDB SDK?为尽可能小的包剔除不必要的依赖项。此外,如果您只需要一个函数就可以从库中获得所需的数据,那么积极地对代码进行后移植是减少包大小的另一种方法

若应用程序允许,Python和NodeJS运行时的延迟可能会更低

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

  • 如果lambda函数很少更改,或者需要处理的组合有限且很小,则将配置烘焙到lambda函数中
  • 重构处理程序以从InputStream负载读取更多配置
  • 使用Lambda环境变量管理配置

  • 定期执行NO-OP将有助于使Lambda函数保持温暖。由newrelic执行的操作表明,每隔1到10分钟调用函数就足以避免频繁的冷启动。即使您的函数对负载的响应是热的

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

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

    在构建zip/jar时,您是依赖于整个SDK还是仅依赖于DynamoDB SDK?为尽可能小的包剔除不必要的依赖项。此外,如果您只需要一个函数就可以从库中获得所需的数据,那么积极地对代码进行后移植是减少包大小的另一种方法

    若应用程序允许,Python和NodeJS运行时的延迟可能会更低

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

  • 如果lambda函数很少更改,或者需要处理的组合有限且很小,则将配置烘焙到lambda函数中
  • 重构处理程序以从InputStream负载读取更多配置
  • 使用Lambda环境变量管理配置

  • 谢谢你的回复!是的,切换到NodeJS和更频繁地呼叫lambda有很大帮助。我将尝试使用CPU/内存,看看它是否有显著的不同。感谢您的回复!是的,切换到NodeJS和更频繁地呼叫lambda有很大帮助。我将尝试使用CPU/内存,看看它是否有显著的区别。