美文网首页
NodeJS mysql连接池使用及遇到的神坑

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

作者: 何家小富富 | 来源:发表于2022-07-11 14:03 被阅读0次

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

    神坑:

    并发访问时,通过 conn.release()释放连接不成功 ,导致一定访问达到连接数上限后,
    pool.getConnection 直接卡死没有任何的回调
    改成 pool.releaseConnection(conn) 才okay!

    PS: 可以通过以下命令查看当前的mysql连接数:
    mysqladmin -uroot -proot processlist

    explain

    开发的项目中的确 出现了这个问题,感谢原博主的分享。特此记录一下

    改造后的代码

    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)
                    // 事件驱动回调
                    callback(qerr, vals, fields);
                });
            }
        });
    };
    

    相关文章

      网友评论

          本文标题:NodeJS mysql连接池使用及遇到的神坑

          本文链接:https://www.haomeiwen.com/subject/ufdnbrtx.html