aws api 网关和lambda函数超时问题

Aws api gateway and lambda functions timeout problem

我想我遇到了一个常见问题,但我不知道如何解决。 我有一个用 angular10 开发的前端和一个后端,分为几个用 java11 编写的 lambda 函数。中间是 api 网关。作为数据库,我在 rds 中使用 mysql。 现在,我从客户端发送一个获取请求,api 网关调用正确的 lambda 函数,但返回超时。 从 CloudWatch 我看到所有 lambda 进程都已成功关闭,从报告中我看到: 报告持续时间:32295.26 毫秒计费持续时间:32296 毫秒内存大小:256 MB 使用的最大内存:178 MB 初始化持续时间:378.89 毫秒

我知道 java 冷启动很重,与数据库的连接很慢,但数据库是空的,所以我不明白这段时间花在了哪里。另外:如果我在打完第一个电话后立即打第二个电话,响应速度非常快,而且客户很满意。

无论如何...我不知道如何解决,因为我们知道 api 网关超时不能增加。然后,我不想以异步方式转换我所有的客户端。

有什么建议吗?

您正在处理 Lambda 冷启动时间问题。有一些可能的解决方案可以解决您的问题。

  1. 更改您的后端语言。

Java 因 lambda 的启动时间较慢而闻名,因为启动环境需要一些时间。如果您在 lambda 中使用 python 或 nodejs 等解释型语言,启动时间将大大减少。

  1. 增加 lambda 的内存

可以通过增加分配的内存来缩短启动时间。这将提高价格。

  1. 让 lambda 保持温暖

您可以使用另一个 lambda 每分钟调用您的第一个 lambda。这将使您的 lambda 保持温暖状态,但如果您需要扩展,lambda 将需要冷启动。

  1. 预置并发

预置并发是 lambda 的一项功能,可始终保持 运行 lambda 实例。这可以减少您的启动时间,因为如果您需要扩大流量,您只需要冷启动(您始终可以增加配置的总数以防止需要扩展)。这可能很昂贵,因为您实际上是在拥有一台服务器 运行 并为其付费。

资源: Cold Starts