我们有一个运行的服务器,它有两个到数据库的连接,它们都是使用池创建的。
例子:
var connection = mysql.createPool({
host: config.mysql.host,
user: config.mysql.user,
password: config.mysql.pass,
database: config.mysql.database
});
但是,我们有很多查询,但是池负责处理/关闭我被告知的活动连接。
现在的连接只是堆积如山,旧的连接没有得到照顾。最终我们将用尽可用的连接,服务器将挂起。
查询功能;
var query = function(query){
return new Promise(function(resolve, reject){
con.query(query, function(err, row){
if(err){
reject(err);
}
resolve(row);
});
});
}
函数的使用;
db.query('SELECT * FROM `users` WHERE `isBanned` = 0').then(function(users){
//active users
}).catch(function(err){
...
});
所有正在堆积的连接都处于命令休眠状态
编辑:将连接合并到一个数据库池中
主要.js
var pool = mysql.createPool({
connectionLimit: 250,
host: config.mysql.host,
user: config.mysql.user,
password: config.mysql.pass,
database: config.mysql.database,
charset: 'utf8_general_ci'
});
module.exports.pool = pool;
database.js(基本上只是用于查询函数)
var main = require('./server.js');
var query = function(query){
return new Promise(function(resolve, reject){
main.pool.query(query, function(err, row){
if(err){
reject(err);
}
resolve(row);
});
});
}
module.exports = {
con: main.pool,
query: query
};
暂无答案!
目前还没有任何答案,快来回答吧!