【问题标题】:Lambda function returns timeout even after getting the response即使在收到响应后,Lambda 函数也会返回超时
【发布时间】:2018-01-08 06:59:42
【问题描述】:

我们有一个基于 java 的 AWS lambda 函数,每天通过 API 网关调用大约 10-15 次,这在我看来非常少。

Lambda 配置具有 1024 MB 的内存和 15 秒的超时限制。 但是从过去一周左右开始,即使在得到响应后,lambda 函数也会超时。 而且这种情况并不统一。它是零星的。并最终在一段时间后正常执行。

我们已经尝试优化代码,它的执行时间应该不会超过 ~8 秒。 希望能找到解决这个问题的办法。如果需要更多信息,请告诉我。

提前致谢。

问题类似于这个问题:AWS Lambda function timing out

唯一的区别是使用的技术:上面的问题使用了nodeJS,我们使用了Java

--更新: 我注意到的另一件事是,当API 在长时间空闲后被击中时,执行所需的时间比连续击中它时要长。 我检查了日志,当我第一次点击它时,它执行大约需要 7-8 秒,而在连续 2 次点击之后,响应时间减少到只有 2 秒.. 很奇怪......

【问题讨论】:

  • 您所说的时间只是 Lambda 表达式或整个 API 所花费的时间?
  • @NikhilPareek 只是 lambda.. 不是 API

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


【解决方案1】:

您似乎在 lambda/api 网关上遇到了与预热相关的问题。 已经有一些人complaining about this

您可以采取一些变通方法来使 lambda 保持温暖,for example triggers

我检查了日志,当我第一次点击它时,它执行大约需要 7-8 秒,而在连续点击 2 次之后,响应时间减少到仅仅 2 秒。非常奇怪......

这是因为你有一个温暖的 lambda,因此它不需要创建一个新的。

【讨论】:

  • 是的,这可能与预热 lambda 函数有关。但是,我的第一个问题:但是从过去一周左右开始,即使在收到响应后,lambda 函数也会超时。而且这种情况并不统一。它是零星的。并最终在一段时间后正常执行。知道为什么会这样吗?
  • tbh,这是一个奇怪的场景,你注意到记录超时的时间了吗?还有你为 lambda 选择的内存是什么?
  • 选择的内存是 1024 MB。我从云手表的日志中检查的超时。基本上,当请求发送到 lambda 函数时,会记录一个启动请求。我在执行结束时添加了记录器以检查是否收到响应。这个记录器会登录到 Cloud watch。但是在发生这种情况之后,请求就超时了。超时设置为 15 秒
  • 看起来很奇怪,如果发送响应,lambda 不应该超时
  • 正是.. 这也是我的想法.. 但你可以看到这是一个类似的问题:stackoverflow.com/questions/40776264/… 那里也有一个快照
猜你喜欢
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 2017-09-07
  • 1970-01-01
  • 2017-11-23
相关资源
最近更新 更多