node.js中mysql连接池的使用【转】
转自:https://blog.csdn.net/sinat_18474835/article/details/80054152
起初的做法是创建一个连接然后使用,后来发现一段时间后会出现卡死不响应的情况,只有重启nodejs服务,搜索一番后想到了用连接池,经测试,不再出现卡死不响应情况。
参考链接:https://www.npmjs.com/package/mysqlhttp://blog.csdn.net/lovingshu/article/details/41721233
Node.js mysql连接池模块
1,安装node的mysql模块 npm -install -g node-mysql
2,建立一个类库,就叫mysql_pool.js吧,然后内容如下:
-
var mysql=require("mysql");
-
var pool = mysql.createPool({
-
host: 'localhost',
-
user: 'user',
-
password: 'password',
-
database: 'database',
-
port: port
-
});
-
-
var query=function(sql,options,callback){
-
pool.getConnection(function(err,conn){
-
if(err){
-
callback(err,null,null);
-
}else{
-
conn.query(sql,options,function(err,results,fields){
-
//释放连接
-
conn.release();
-
//事件驱动回调
-
callback(err,results,fields);
-
});
-
}
-
});
-
};
-
-
module.exports=query;
3,在js类使用如下
-
var query=require("./lib/mysql_pool");
-
-
query("select * from table where id=?", [1], function(err,results,fields){
-
//do something
并发访问时,通过conn.release()释放连接死活不成功,导致一定访问达到连接数上限后,pool.getConnection直接卡死没有任何的回调!
改成pool.releaseConnection(conn)才okay!PS: 可以通过以下命令查看当前的mysql连接数:
mysqladmin -uroot -proot processlist