web-dev-qa-db-fra.com

Sequelize: TimeoutError: ResourceRequest a expiré

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?

16
Sam Calvert

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,
    }
  }
);
2
Gustavo Emmel

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

1
Michael Kaufman

Cette solution fonctionne pour moi:

  pool: {
    max: 100,
    min: 0,
    // @note https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057
    acquire: 100*1000,
  }
0
webolizzer