Lambda函数将数据插入RDS时的ETIMEDOUT

问题描述 投票:0回答:2

我正在使用Lambda将数据插入RDS。我有~1000条记录。但是,我测试该功能时收到以下错误。当我检查数据库时,只成功插入了一些(~160)记录。我找不到任何有用的信息,因为我成功连接到数据库。

我使用节点,基本上,使用Promise.map来处理异步。我认为问题不是来自代码,这是一个网络问题,可能是限制我的查询计数。谁能给我一些见解?

{
  "cause": {
    "errorno": "ETIMEDOUT",
    "code": "ETIMEDOUT",
    "syscall": "connect",
    "fatal": true
  },
  "isOperational": true,
  "errorno": "ETIMEDOUT",
  "code": "ETIMEDOUT",
  "syscall": "connect",
  "fatal": true
}
mysql node.js aws-lambda amazon-rds
2个回答
0
投票

您可以尝试在数据库中设置超时:

查看超时:

show VARIABLES like '%timeout%'

建立:

SET GLOBAL connect_timeout=28800
SET GLOBAL wait_timeout=28800
SET GLOBAL interactive_timeout=28800

0
投票

在完成查询以使lambda正确退出之后,您将需要关闭所有数据库连接,否则它将始终超时。

此外,请确保在lambda处理程序内启动数据库连接。这将确保在lambda函数启动时始终创建db连接,并且在重用lambda容器时永远不会遇到任何Connection closed问题

© www.soinside.com 2019 - 2024. All rights reserved.