mysql 连接池 好多sleep的连接 导致请求阻塞
发布于 7 年前 作者 672489861 5197 次浏览 来自 问答

求各位高手帮忙看看问题出哪里了? 小弟用的是mysql模块,当一个页面同时加载3-4个请求的时候 数据库中就会出现多个sleep状态的连接,mysql配置了connectionLimit 为10 ,所以当从A页面切到B页面,B切到A页面反复几次,就会出现阻塞情况,我也反复看了官方api,感觉没有地方有问题,求解答,除了修改数据库wait timeout的时间外还有什么解决方案没?

var mysqlUtil = (function () { var _pool = null; var _logger = null;

var util = {};

// init util.init = function () { if (!_pool) { _pool = require(’…/datasource/mysql.js’); } _logger = require(’./logger.js’); _pool.on(‘release’, function (connection) { console.log(‘Connection %d released’, connection.threadId); }); return util; };

// query util.query = function (sql, args, cb) { _logger.info(sql); _pool.getConnection(function (err, connection) { if (err) { _logger.error(err.stack); return false; } else { connection.query(sql, args, function (err, result) { _pool.releaseConnection(connection); if (err) { _logger.error(err.stack); return false; } else { cb(err, result); } }); } }); };

return util.init(); })();

module.exports = mysqlUtil;

4 回复

请放出 datasource/mysql.js 的代码和运行截图

@Hi-Rube 列表页单独请求没什么问题,连接释放了untitled1.png , 但是新增页面因为要加载些字典,人员等数据,所以同时会发起几个请求,连接就没有走释放。 untitled2.png

@672489861 我想应该是你业务逻辑代码写得有问题

回到顶部