Sequelize: TimeoutError: время ожидания ResourceRequest
Приложение My Express, работающее на node 6.11 с Sequelize 4.5.0, иногда бросает TimeoutError: ResourceRequest timed out
на операции, которые не должны быть особенно дорогими. Мы говорим о 5 строках записи, каждый из которых выполняется индивидуально.
База данных - это экземпляр Amazon RDS MySQL, который не обнаружил никаких проблем с подключением к нашему второму API, который написан на Ruby, и использует ActiveRecord как ORM.
Я не уверен, как начать диагностировать проблему, какие-нибудь идеи о том, что я должен делать дальше?
Ответы
Ответ 1
Я столкнулся с той же проблемой, связанной с секвелированием, используя запросы, которые занимают много времени. Основываясь на проблеме с 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
Это решение работает для меня:
pool: {
max: 100,
min: 0,
// @note https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057
acquire: 100*1000,
}
Ответ 3
Для тех из вас, кто все еще использует v4 из Sequelize, эта проблема могла быть исправлена в v4.44.1.
Смотрите PR: https://github.com/sequelize/sequelize/pull/11140
Смотрите выпуск: https://github.com/sequelize/sequelize/issues/11139