最近在开发小游戏,遇到个nodejs访问mysql的问题,可怜巴巴的打了一晚上日志,发现卡死在pool.getConnection
没有回调.
NodeJS中使用mysql连接池
function query(sql, sqlParams, callback) {
pool.getConnection(function (err, conn) {
if (err) {
callback(err, null, null);
} else {
conn.query(sql, sqlParams, function (qerr, vals, fields) {
callback(qerr, vals, fields);
});
}
// conn.release(); // not work!!!
pool.releaseConnection(conn);
});
};
exports.init = function (config) {
pool = mysql.createPool({
host: config.HOST,
user: config.USER,
password: config.PSWD,
database: config.DB,
port: config.PORT,
});
};
神坑:
并发访问时,通过conn.release()
释放连接死活不成功,导致一定访问达到连接数上限后,pool.getConnection
直接卡死没有任何的回调!
改成pool.releaseConnection(conn)
才okay!
PS: 可以通过以下命令查看当前的mysql连接数:
mysqladmin -uroot -proot processlist