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,
  }