繁体   English   中英

AWS lambda function 的长时间超时

[英]Long timeout for AWS lambda function

我们有一个与基于云的应用程序交互的lambda 我们最初将 lambda 超时设置为 15 秒,它通常在 10 秒内完成,所以一切看起来都很好。

随着时间的推移,我们发现在某些情况下 API 响应可能会延迟,有时会延迟 20 秒或更长时间。 我们将超时时间增加到 40 秒,这可以解决大多数情况。 然而,响应延迟的时间仍然比这更长。

问题:可以设置更长的超时时间,比如 90 秒吗? 这会带来任何问题或风险吗?

如前所述,超时的主要用途是停止 lambda function,如果需要的时间超出预期。 这可能是由于无限循环或软件错误而发生的,在这种情况下,您希望终止 function 以停止浪费资源。

在实践中这种情况很少发生。 经常发生的事情是您所经历的:您在第一次设计 function 时所做的假设不正确或已经改变

您假设 API 应该快速回复,这样一切都会在 10 秒内完成。 这不是真的,您已经更改了一次超时。 您发现需要再次更改超时。 这应该让你重新思考你的整个架构。 如果长时间延迟很少见,您可能只需要再次增加超时并忘记它。 如果不是,或者您希望将来不会,那么您遇到的问题不仅仅是设置超时:

  • 你浪费了计算资源,什么都不做,只是等待回复。 function 运行期间,您仍然需要付费。
  • 如果在某些情况下需要很长时间,这意味着它可能会完全超时并且调用失败。 因此,您需要重试机制和可靠的错误报告解决方案。

在 AWS lambda端,如果您没有达到 900 秒(15 分钟)的最大执行时间,也没关系。 请参阅: http://docs.aws.amazon.com/lambda/latest/dg/limits.html

如果您的 lambda 是由SQS触发的,则必须注意可见性超时 建议将队列可见性超时设置为 lambda function 超时的 6 倍

此外,您必须注意解决方案中的其他进程是否等待 lambda 结果,并且是否可以延迟它们增加 lambda 超时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM