Mon application Express exécutée sur le nœud 6.11 avec Sequelize 4.5.0 lance parfois TimeoutError: ResourceRequest timed out
, sur des opérations qui ne devraient pas être particulièrement coûteuses. Nous parlons de 5 lignes d'écritures, chacune exécutée individuellement.
La base de données est une instance Amazon RDS MySQL, qui n'a montré aucun problème de connexion à notre deuxième API qui est écrite en Ruby et utilise ActiveRecord comme ORM.
Je ne sais pas comment commencer à diagnostiquer le problème, des idées sur ce que je dois faire ensuite?
J'ai rencontré le même problème avec la séquestration à l'aide de requêtes qui consomment beaucoup de temps. Sur la base du problème github ( https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057 ), le correctif pour moi était d'augmenter le temps d'acquisition. Lorsque j'instancie une nouvelle séquelle, je fais ce qui suit:
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,
}
}
);
Pour ceux d'entre vous qui utilisent encore la version 4 de Sequelize, ce problème peut avoir été résolu par v4.44.1 .
Voir PR: https://github.com/sequelize/sequelize/pull/1114
Voir problème: https://github.com/sequelize/sequelize/issues/11139
Cette solution fonctionne pour moi:
pool: {
max: 100,
min: 0,
// @note https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057
acquire: 100*1000,
}