javascript - AWS Lambda postgres 连接超时,但仅在第一次尝试时

标签 javascript node.js postgresql amazon-web-services lambda

我正在使用 Lambda 连接到属于 VPC 的 Postgres RDS 实例。如果Lambda函数一段时间没有被调用,执行大约2分钟后会出现如下错误:

could not connect to postgres { [Error: connect ETIMEDOUT] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect' }

当 lambda 函数重试时,它会成功连接到数据库并正常执行。

Lambda 函数是使用 node-postgres 包为 node.js 编写的。连接程序看起来像这样:

var client = new pg.Client(conString);
client.connect(function(err) {
    console.log("client connected");
    if(err) {
         context.fail('Connection failed');  
    }
    else { //do stuff }
}

日志显示它在超时之前永远不会到达“客户端连接”。在这些第一次尝试中出了什么问题?

注意:如果在 20-30 分钟内再次调用 lambda 函数,则不会发生此超时并且函数会成功执行。

最佳答案

这个问题也发生在我身上,在我第一次尝试调用 lambda 函数时没有使用 lambda 几分钟后,我得到了

{"errorMessage":"connect ETIMEDOUT","errorType":"SequelizeConnectionError","stackTrace":["Handshake._callback (/var/task/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:94:20)","Handshake.Sequence.end (/var/task/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)","Protocol.handleNetworkError (/var/task/node_modules/mysql/lib/protocol/Protocol.js:364:14)","Connection._handleNetworkError (/var/task/node_modules/mysql/lib/Connection.js:421:18)","Connection._handleConnectTimeout (/var/task/node_modules/mysql/lib/Connection.js:417:8)","Socket.g (events.js:260:16)","emitNone (events.js:67:13)","Socket.emit (events.js:166:7)","Socket._onTimeout (net.js:318:8)","_runOnTimeout (timers.js:524:11)","_makeTimerTimeout (timers.js:515:3)","Timer.unrefTimeout (timers.js:584:5)"]}

重试 2-3 次后它有效

关于javascript - AWS Lambda postgres 连接超时,但仅在第一次尝试时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189182/

相关文章:

javascript - Angular : Pass $scope variable as directive attribute

node.js - 通过 Route 53 内的域指向 EC2 实例并超时

Django,无法验证某些用户

postgresql - 这是 psycopg2 cur.mogrify() 中的错误吗?

postgresql - 以 VARCHAR 作为参数的 PL/pgSQL 函数

php - 限制用户输入特殊字符和数字

javascript - 在 Rails View 中运行 JavaScript 函数 onLoad?

javascript - 将电子邮件从多个电子邮件表单发送到多个电子邮件地址

node.js - 使用 Bower 安装 Bootstrap 而不是通过 NPM 或 NuGet 是否仍然合适?

node.js - 使用 shopify-api-node 从本地计算机上传文件(图像)