NodeJS mysql連接池使用及遇到的神坑

原文: NodeJS mysql連接池使用及遇到的坑

神坑:

并發(fā)訪問(wèn)時(shí),通過(guò) conn.release()釋放連接不成功 ,導(dǎo)致一定訪問(wèn)達(dá)到連接數(shù)上限后,
pool.getConnection 直接卡死沒(méi)有任何的回調(diào)!
改成 pool.releaseConnection(conn) 才okay!

PS: 可以通過(guò)以下命令查看當(dāng)前的mysql連接數(shù):
mysqladmin -uroot -proot processlist

explain

開(kāi)發(fā)的項(xiàng)目中的確 出現(xiàn)了這個(gè)問(wèn)題,感謝原博主的分享。特此記錄一下

改造后的代碼

const mysqlDb = require('mysql');
const mysqlPool = mysqlDb.createPool(config.mysqlConnect);

const query = function (sql, callback) {
    console.log("test--10:",sql);
    // var mysqlPool = mysqlDb.createPool(config.mysqlConnect);
    mysqlPool.getConnection(function (err, conn) {
        if (err) {
            console.log("test--11:",err);
            callback(err, null, null);
            throw new Error(" 從mysql 連接池中 獲取 連接失敗[luo Mr.]?。?);
        } else {
            console.log("test--12:",sql);
            if( sql == null ){ 
                    // 兼容sql為 null
                return callback( undefined, "", "",);
            }
            conn.query(sql, function (qerr, vals, fields) {
                console.log("test--13:",qerr, vals);
                // 釋放連接
                // conn.release();
                mysqlPool.releaseConnection(conn)
                // 事件驅(qū)動(dòng)回調(diào)
                callback(qerr, vals, fields);
            });
        }
    });
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容