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吧,然后内容如下:

  1.  
    var mysql=require("mysql");
  2.  
    var pool = mysql.createPool({
  3.  
    host: 'localhost',
  4.  
    user: 'user',
  5.  
    password: 'password',
  6.  
    database: 'database',
  7.  
    port: port
  8.  
    });
  9.  
     
  10.  
    var query=function(sql,options,callback){
  11.  
    pool.getConnection(function(err,conn){
  12.  
    if(err){
  13.  
    callback(err,null,null);
  14.  
    }else{
  15.  
    conn.query(sql,options,function(err,results,fields){
  16.  
    //释放连接
  17.  
    conn.release();
  18.  
    //事件驱动回调
  19.  
    callback(err,results,fields);
  20.  
    });
  21.  
    }
  22.  
    });
  23.  
    };
  24.  
     
  25.  
    module.exports=query;

3,在js类使用如下

  1.  
    var query=require("./lib/mysql_pool");
  2.  
     
  3.  
    query("select * from table where id=?", [1], function(err,results,fields){
  4.  
    //do something
     
     
     
     
     

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

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

     

     

     

     

     

 
posted @ 2019-03-11 16:50  Mersn  阅读(643)  评论(0编辑  收藏  举报