Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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
Amazon web services Aws api网关和lambda函数超时问题_Amazon Web Services_Aws Lambda_Timeout_Aws Api Gateway_Java 11 - Fatal编程技术网

Amazon web services Aws api网关和lambda函数超时问题

Amazon web services Aws api网关和lambda函数超时问题,amazon-web-services,aws-lambda,timeout,aws-api-gateway,java-11,Amazon Web Services,Aws Lambda,Timeout,Aws Api Gateway,Java 11,我想我有一个共同的问题,但我不知道如何解决它。 我有一个用angular10开发的前端和一个用java11编写的几个lambda函数划分的后端。中间有API网关。作为数据库,我在rds中使用mysql。 现在,从我发送get请求的客户端,api网关调用正确的lambda函数,但返回超时。 从CloudWatch中,我看到所有lambda进程都已成功关闭,从报告中我看到: 报告持续时间:32295.26毫秒计费持续时间:32296毫秒内存大小:256 MB最大使用内存:178 MB初始持续时间:3

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

我知道java冷启动很重,到db的连接很慢,但是数据库是空的,所以我不知道这段时间花在哪里。另外:如果我在第一次之后立即打第二次电话,反应会非常快,客户也会很高兴

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


有什么建议吗?

您正在处理Lambda冷启动时间问题。你的问题有几种可能的解决方案

  • 更改后端语言
  • 众所周知,Java的lambda启动速度较慢,因为启动环境需要一点时间。如果在lambda中使用解释语言(如python或nodejs),启动时间将大大缩短

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

  • 保暖
  • 您可以使用另一个lambda每分钟给您的第一个lambda打电话。这将使您的lambda处于温暖状态,但如果您需要扩展,lambda将需要冷启动

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

    资源:

    冷启动时间不超过30秒……即使使用Java,也不超过2秒。谢谢您的回复。诚恳地说,我只看到两种可能的解决方案,即第1点和第3点,以保持低成本。关于如何组织第3点有什么想法吗?如果后续呼叫运行正常,这是一个冷启动问题。冷启动可能是由所使用的包和库的大小决定的。对于第3点,您可以创建一个lambda,该lambda由每分钟发生的预定cloudwatch事件触发。在这个lambda中,您将有一个对端点的rest调用,该调用将导致lambda在需要时运行和引导。