티스토리 뷰

nodejs mysql connection pool 관리.

어제에 이어 금일은 generic-pool을 이용한 mysql connection pool 관리하는 방법에 대해 알아보겠습니다.


선행 작업

nodejs + mysql 연동 : http://rocksea.tistory.com/174


step1. generic-pool 설치

$ npm install generic-pool -save


step2. _DBPool.js 작성

_DBPool.js

var generic_pool = require('generic-pool');
var mysql = require('mysql');
var pool = generic_pool.Pool({
        name: 'mysql',
        create: function(callback) {
                var config = {
                        host : 'localhost',
                        port : '3306',
                        user : 'rocksea',
                        password : '1234',
                        database : 'rocksea'
                }
                var client = mysql.createConnection(config);
                client.connect(function (error){
                  if(error){
                    console.log(error);
                  }
                  callback(error, client);
                });
        },
        destroy: function(client) {
          client.end();
        },
        min: 7,
        max: 10,
        idleTimeoutMillis : 300000,
        log : true
});

process.on("exit", function() {
  pool.drain(function () {
    pool.destroyAllNow();
  });
});


module.exports = pool;


member.js

var _DBPool = require('../lib/_DBPool');
/*
 * GET users listing.
 */

exports.list = function(req, res){
  console.log(req.session.rocksea);
  //res.send("@@@@@@@respond with a resource");

  _DBPool.acquire(function(err, db) {
    if (err) {
      return res.end("CONNECTION error: " + err);
    }

    db.query("select * from member",[],function(err, rows, columns) {
        _DBPool.release(db);

        if (err) {
          return res.end("QUERY ERROR: " + err);
        }
        res.end(JSON.stringify(rows));
    });
  });
};


step3. 실행 및 결과

총 7개의 connection을 생성했으며 14 ( Client 7 + Server 7 ) 개의 ESTABLISHED된 Session을 볼 수 있습니다.



이상으로 mysql + generic connection pool 설정 방법에 대해 알아보았습니다.

.by rocksea

'Developer' 카테고리의 다른 글

[nodejs] PostgreSQL prepared statement 적용.  (0) 2013.06.26
[PostgreSQL] schema 생성 및 조회설정  (0) 2013.06.04
[node.js] mysql 연동  (0) 2013.05.28
[qmail] spam black list, white list 등록  (0) 2013.05.23
[DNS] zone file reload  (0) 2013.05.08
댓글