@kinojs
Начинающий разрабочтик, WEB

Почему выдает ошибку The pool is probably full в Knex.js?

Столкнулся с этой ошибкой, когда запросов стало ну очень много. Все тразакции, что использую, завершаю.
Mysql показывает в thread Connections 1 (1 активное подключение). Лимит max_connections 256
ProcessList тоже пустой (1 активная задача, и та от localhost)

Настройки pool в knex выглядят так:
{
  pool: {
    min: 4,
    max: 256
  }
}


Бд находится на другом сервере. Что уже тоько не гуглил, в коде запихнул параллельные запросы в единую очередь, но даже это не помогло.

Вот метод, в котором ошибка появляется

insertOrUpdate = async (tableName, rows) => {
    this.countRequests += 1;
    this.addWaiting();
    
    await this.db.transaction((trx) => {

        const queries = rows.map((tuple) => {

            const insert = trx(tableName).insert(tuple).toString()
            const update = trx(tableName).update(tuple).toString().replace(/^update(.*?)set\s/gi, '')

            return trx.raw(`${insert} ON DUPLICATE KEY UPDATE ${update}`).transacting(trx)
        })

        return Promise.all(queries).then(trx.commit).catch(trx.rollback)
    });

    this.removeWaiting();
    return
  }
  • Вопрос задан
  • 19 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы