gpt4 book ai didi

node.js - 将 Sequelize 与 RDS 一起使用获取 TimeoutError : ResourceRequest timed out

转载 作者:行者123 更新时间:2023-12-03 22:17:10 24 4
gpt4 key购买 nike

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

TimeoutError: ResourceRequest timed out
at ResourceRequest._fireTimeout (/home/ubuntu/myproject/etl/node_modules/generic-pool/lib/ResourceRequest.js:62:17)
at Timeout.bound (/home/ubuntu/myproject/etl/node_modules/generic-pool/lib/ResourceRequest.js:8:15)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5)

RDS 盒子相当强大 (db.t2.large),自一年多前它开始运行良好以来,这一直不是问题。

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

一般来说,建议是增加 sequelize 的 acquire 设置,这决定了它将等待多少毫秒以查看池中的另一个线程是否打开来为请求提供服务。我的当前设置为 30,000,这似乎是一个非常大的值。比 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 个连接总是忙。

关于node.js - 将 Sequelize 与 RDS 一起使用获取 TimeoutError : ResourceRequest timed out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58560662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com