使用Sequelize 4.5.0在节点6.11上运行的My Express应用程序有时会抛出TimeoutError: ResourceRequest timed out
,这些操作应该不会特别昂贵。我们正在谈论5行写入,每行都是单独执行的。
该数据库是一个Amazon RDS MySQL实例,连接到我们用Ruby编写的第二个API并且使用ActiveRecord作为ORM时没有显示任何问题。
我不确定如何开始诊断问题,关于我接下来该做什么的任何想法?
答案 0 :(得分:0)
此解决方案对我有用:
pool: {
max: 100,
min: 0,
// @note https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057
acquire: 100*1000,
}
答案 1 :(得分:0)
使用消耗大量时间的查询进行序列化时,我遇到了同样的问题。 基于github问题(https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057),对我来说,解决方法是增加获取时间。 当我实例化一个新的续集时,请执行以下操作:
const sequelize = new Sequelize(
config.get("dbConfig.dbName"),
config.get("dbConfig.user"),
config.get("dbConfig.password"),
{
dialect: "mysql",
operatorsAliases: false,
host: config.get("dbConfig.host"),
pool: {
max: 100,
min: 0,
idle: 200000,
// @note https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057
acquire: 1000000,
}
}
);
答案 2 :(得分:0)
对于仍在使用Sequelize v4的您来说,此问题可能已由v4.44.1解决。
答案 3 :(得分:0)
我认为我是最有资格回答这个问题的人。
这个问题曾经使我的生活陷入困境,无论我如何调整配置。
因此,针对此问题有两种解决方案,第一种是设置类似于以下的池配置
pool: {
max: 50,
min: 0,
acquire: 1200000,
idle: 1000000,
}
这再次可以解决您的问题,但是当负载增加时,您将再次开始获得错误。
回到第二种解决方案,您可以真正查看表架构或针对表运行的查询。如果遇到这些问题,则意味着您的查询没有经过优化,这比正常情况花费更长的时间 最好的选择是在列上使用索引,您将永远不会遇到这个问题