Developer
[node.js] mysql connection pool 관리
rocksea
2013. 5. 29. 01:10
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