使用节点杀死所有睡眠的mysql池连接

问题描述 投票:0回答:1

我正在为项目使用节点并使用连接池,每当查询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个以上的睡眠连接。有没有办法通过节点杀死无用的睡眠连接?还是有那么多睡眠连接好吗?

提前感谢!

javascript mysql node.js database connection-pooling
1个回答
0
投票
如果使用连接池,则在完成使用时需要close all the connections in the pool。否则,连接将保持打开状态,直到被MySQL服务器关闭为止。

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

[This GitHub issue解释了更多关于释放连接(conn.release())和关闭基础连接池(pool.end())之间的细微差别。
© www.soinside.com 2019 - 2024. All rights reserved.