Node.js 将Sequelize与RDS一起使用getting TimeoutError:ResourceRequest超时

Node.js 将Sequelize与RDS一起使用getting TimeoutError:ResourceRequest超时,node.js,sequelize.js,amazon-rds,Node.js,Sequelize.js,Amazon Rds,我有一个node.js ETL系统,它使用将数据加载到amazon RDS PostgreSQL实例中。在将记录插入数据库时,我突然开始看到随机超时错误: TimeoutError:ResourceRequest超时 在ResourceRequest.\u fireTimeout(/home/ubuntu/myproject/etl/node\u modules/generic pool/lib/ResourceRequest.js:62:17) Timeout.bound(/home/ubun

我有一个node.js ETL系统,它使用将数据加载到amazon RDS PostgreSQL实例中。在将记录插入数据库时,我突然开始看到随机超时错误:

TimeoutError:ResourceRequest超时
在ResourceRequest.\u fireTimeout(/home/ubuntu/myproject/etl/node\u modules/generic pool/lib/ResourceRequest.js:62:17)
Timeout.bound(/home/ubuntu/myproject/etl/node_modules/generic pool/lib/ResourceRequest.js:8:15)
在ontimeout(timers.js:482:11)
在tryOnTimeout(timers.js:317:5)
at Timer.listOnTimeout(timers.js:277:5)
RDS盒相当坚固(
db.t2.large
),自从一年前它开始运行以来,这并不是一个问题

基于此,似乎这通常是由于sequelize线程池由于长时间运行的并行查询而耗尽了线程。我不认为这里是这种情况,因为我插入的行是串联的,而不是并联的

通常,建议增加sequelize的
acquire
设置,该设置确定它将等待多少毫秒,以查看池中的另一个线程是否打开以服务请求。My当前设置为30000,这似乎是一个非常大的值。比RDS在表中插入1行所需的时间长

这是我的配置:

pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000,
}
这只是ec2和RDS之间的网络连接问题吗?这可能是另一个错误。

1)检查现有连接:

SELECT client_addr, count(*) FROM pg_stat_activity WHERE datname = 'YOUR_DB_NAME' GROUP BY client_addr;
2) 您可以增加最大池大小

3) 有时,您会遇到耗时超过1分钟的慢速查询,或者出现错误查询,如事务已启动但从未结束。在这种情况下,1连接总是忙的