Убить все спящие mysql пул соединений с помощью узла - PullRequest
1 голос
/ 12 марта 2020

Я использую узел для своего проекта и использую пул соединений, всякий раз, когда я запрашиваю show processlist, я обнаруживаю более 200 спящих соединений, хотя я выпускаю его после каждого запроса, подобного этому -

    return new Promise((resolve, reject) => {

    sql.getConnection(function (err, conn) {
        if (err) {
            conn.release();
            reject(err)
        }
        conn.query('QUERY', function (err, rows) {
            conn.release();
            if (err) {
                reject(err)
            }
            else {
                resolve(rows[0])
            }
        })
    })
})

Все еще я нашел более 200 спальных соединений. Есть ли способ убить бесполезные спящие соединения через узел? Или это нормально, если у вас так много спящих соединений?

Заранее спасибо!

1 Ответ

0 голосов
/ 12 марта 2020

Если вы используете пул соединений, вам нужно закрыть все соединения в пуле , когда вы закончите их использовать. В противном случае соединения будут оставаться открытыми до тех пор, пока они не будут закрыты сервером MySQL.

pool.end(function (err) {
  // all connections in the pool have ended
});

В этом выпуске GitHub немного поясняется нюанс между освобождением соединения (conn.release() ) и закрытие базового пула соединений (pool.end()).

...