Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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 如何提高AWS Lambda服务的性能?_Java_Amazon Web Services_Amazon Ec2_Aws Lambda_Aws Api Gateway - Fatal编程技术网

Java 如何提高AWS Lambda服务的性能?

Java 如何提高AWS Lambda服务的性能?,java,amazon-web-services,amazon-ec2,aws-lambda,aws-api-gateway,Java,Amazon Web Services,Amazon Ec2,Aws Lambda,Aws Api Gateway,我在java中创建了简单的Lambda函数,并使用API网关将其公开。lambda函数的计费持续时间为60 ms,api网关需要40 ms更多响应时间,因此此处的延迟为100 ms 注意:内存大小:1.5GB最大使用内存:40 MB。这里提到的所有响应时间都是lambda功能处于温暖状态(活动)时的响应时间。 如果我们在AWS API网关中测试延迟,则需要100 ms 如果我们在我的本地机器的Rest客户端中测试它,则延迟为1500 ms 如果我们在EC2实例中为同一地区和同一帐户使用(调用)此

我在java中创建了简单的Lambda函数,并使用API网关将其公开。lambda函数的计费持续时间为60 ms,api网关需要40 ms更多响应时间,因此此处的延迟为100 ms

注意:内存大小:1.5GB最大使用内存:40 MB。这里提到的所有响应时间都是lambda功能处于温暖状态(活动)时的响应时间。

如果我们在AWS API网关中测试延迟,则需要100 ms

如果我们在我的本地机器的Rest客户端中测试它,则延迟为1500 ms

如果我们在EC2实例中为同一地区和同一帐户使用(调用)此lambda函数,则延迟200ms

为什么Rest客户端会有如此多的变化,我们知道原因是网络延迟。我如何提高它的性能,因为我们需要在本机应用程序中使用这个Lambda函数,这几乎需要1500毫秒


对于在EC2实例中为同一地区和同一帐户部署的web应用程序,我们得到的公平响应是*200 ms

简短回答:目前,您最好的选择是在尽可能靠近您客户的地区部署lambda

详细回答:这是任何基于web的应用程序的问题,而不仅仅是lambda/api网关的问题。有一些技术可以解决这个问题

  • 缓存内容。API网关自动附带CloudFront分发版,因此如果缓存响应,它们将从最近的POP服务到客户端

  • 多区域部署。如果您的客户端位于许多分散的地理位置,您可以在其中几个区域部署lamda+api网关,然后使用route53和基于延迟的路由从最近的位置为客户端提供服务

  • Lambda@edge。这目前仅在预览中,目前仅支持node.js,但非常适合于响应最近的POP请求


请注意,API网关缓存功能不使用CloudFront发行版在POP上进行缓存,而是在部署API的地区的API网关中缓存数据。还要注意的是,目前无法使用API网关设置具有自动请求路由的多区域部署。在我的测试中,最近区域和最远区域之间的差异从来都不显著——这不是API网关的延迟所在。因此,除非改进,最好在延迟不是问题(不面向Web应用程序)的情况下使用。你必须考虑LAMBDAS不是实时系统的最佳选择。如果客户机调用一段时间未调用的函数,则延迟将大于经常使用的函数。以不规则的速度使用且无需等待一秒或两秒的服务与此服务最匹配。