lambda 函数偶尔会出现连接超时

Lio*_*erg 3 aws-lambda

我不知道为什么,但有时 - 每 20 次 lambda 调用中,我会收到一个错误:

Connection timed out after 120000ms
Run Code Online (Sandbox Code Playgroud)

调用是从 ECS 容器完成的,所有(调用者和 lambda)都是用 node.js 编写的。

我应该检查什么?

在此输入图像描述

ofr*_*fri 6

我知道这是一篇旧帖子,但我将写下如何解决我正在处理的 lambda 中出现相同错误消息的情况。我希望这可以帮助有类似问题的人。

\n

就我而言,我在 EC2 内还有一个 Web 应用程序,它通过 (npm aws-sdk) 调用 lambda lambda.invoke()。EC2 和 lambda 都运行在 Node.JS 上。即使错误记录在 EC2 内部,消息也会由 lambda 本身抛出给调用者 (EC2)。

\n

我的 lambda 向 API 发出约 3,000 个请求,需要约 5 分钟(300,000 毫秒)才能获取所有响应。lambda Node.JS 运行时似乎在 lambda 执行期间保持套接字处于活动状态,该时间高于 120,000 毫秒(2 分钟)。当 lambda 代码持续运行超过此阈值时,运行时会抛出错误,并且 lambda 会返回一个回调。

\n

根据aws js sdk,AWS 对象有一个用于 http 超时的参数:

\n
\n

httpOptions (map) \xe2\x80\x94 传递给低级 HTTP 请求的一组选项。目前支持的选项有:

\n
    \n
  • timeout [Integer] \xe2\x80\x94 将套接字设置为在套接字上不活动超时毫秒后超时。默认为两分钟 (120000)。
  • \n
\n
\n

在我将此配置更改为 360,000 毫秒(6 分钟)后,lambda 成功执行。因此,您可以根据需要将此参数设置为更高的值:

\n
AWS.config.update({httpOptions: {timeout: 360000}});\n
Run Code Online (Sandbox Code Playgroud)\n