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

标签 java amazon-web-services amazon-ec2 aws-lambda aws-api-gateway

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

注意:内存大小:1.5GB 最大使用内存:40 MB。这里提到的所有响应时间都是lambda函数在热状态(活跃)时的响应时间

如果我们测试 AWS API Gateway 中的延迟,则需要 100 毫秒

如果我们在本地计算机的 Rest 客户端 中测试它,则延迟为 1500 毫秒

如果我们在相同区域和相同帐户的 EC2 实例中使用(调用)此 lambda 函数,则延迟为 200 毫秒

为什么 Rest 客户端有如此大的变化,我们知道原因是网络延迟。我怎样才能提高它的性能,因为我们需要在 native 应用程序中使用这个 Lambda 函数,它花费了近 1500 毫秒。

对于部署在相同区域和相同帐户的 EC2 实例中的 Web 应用程序,我们得到了公平的响应,即* 200 毫秒

最佳答案

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

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

  • 缓存内容。 API Gateway 自动附带 CloudFront 发行版,因此如果您缓存响应,它们将从最近的 POP 提供给客户端。

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

  • Lambda @edge。目前仅处于预览阶段,并且目前仅支持 node.js,但非常适合响应来自最近的 POP 的请求

关于java - 如何提高AWS Lambda服务的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42744252/

相关文章:

amazon-web-services - AWS : Find IP address of all connections to RDS instances

sql-server - 您能否提供在 Amazon EC2 实例上运行 SQL Server 的任何提示/最佳实践?

java - C# 相当于 Java RSA/ECB/OAEPWithSHA-256AndMGF1Padding

java - 混合快速排序 + 插入排序 java.lang.StackOverflowError

linux - 安装实例存储损坏 ec2 实例

SSH 到 EC2 但权限被拒绝(公钥)

java - spring roo可以解析注释@javax.validation.constraints.Size参数中的变量吗?

java - 不抽象且不重写抽象方法行为

amazon-web-services - 确定实例是否属于 AWS 中某个 AutoScaling 组的一部分

node.js - 将文件从 url 上传到 s3 存储桶