lang/node

nodejs generic-pool module

C/H 2015. 10. 2. 12:27



설치

npm install generic-pool

Step 1. 초기화 - object를 이용 pool 생성

var poolModule = require(‘generic-pool’);
var pool = poolModule.Pool({
	name : ‘mysql’,
	create : function(callback){
		var Client = require(‘mysql’).Client;
		var c = new Client();
		c.user = ‘scott’;
		c.password = ‘tiger’;
		c.database = ‘mydb’;
		c.connect();

		// paramete order: err, resourc
		callback( null, c );
	},
	destroy: function( client ){ client.end() },
	max : 10,
	min : 2,
	idleTimeoutMillis : 30000,
	//log : false
	log: function( msg, type ){
		if( type === 'error' || type === 'wran' ){
			console.log('generic-pool log : pool -', type, msg );
		}
	}
});

Step 2. pool 사용 및 자원 해제

pool.acquire(function(err, client){ if( err ){ // handle error - this is generally the err form your // factory.create function } else{ client.query( “select * from foo”, [], function(){ pool.release( client ); // 중요!! 사용한 pool 자원은 반드시 release해줘야 자원을 반납한다. }); } )); pool.acquire(function(err, client){ if( err ){ return false; } client.query( “select * from foo”, [], function(){ pool.release( client ); }); ));

Step 3. pool 을 해제하고 종료(옵션)

idleTimeoutMillis 에 지정된 시간 까지 pool은 큐에 등록된 자원을 해제하지 않으며 node도 종료되지 않는다. 명시적으로 자원을 해제해야 할 경우 pool.drain()을 이용한다.
pool.drain( function(){
	pool.destroyAllNow();
});

문서 factory object 설정 요소

name
pool 이름
create
함수 - 새로운 자원을 반환하는 기능으로 생성된 리소스를 콜백으로 호출한다.
destory
함수 - 승인된 자원을 파괴한다.
max
주어진 시간에 만들 수 있는 자원의 최대 수 (기본값 1)
min
풀을 유지하는 최소한의 자원. max보다 높게 설정하면 max -1이 자동으로 설정된다. (기본값 0)
refreshidle
idleTimeoutMillis 이후 파괴된 자원이 재 작성되어야 하는지 여부 (기본값 true)
idletimeoutMillis
리소스가 생존할 수 있는 최대 시간 (기본값 30000)
reapIntervalMillis
유휴자원을 확인하는 시간 (기본값 1000)
returnToHead
boolean, 큐의 동작 방법, true일 경우 가장 최신의 큐가 먼저 실행된다. (기본값 false)
priorityRange
1과 임의의 수 x 사이. 임의의 리소스를 사용할 수 없을 경우 큐에 상대적인 우순 순위를 저정 할 수 있다.
// priorityRange 에 지정된 수를 기준으로 상대적인 우선 순위 설정
pool.acquire(function(err, client) {
     pool.release(client);
 }, 1);
// pool.acquire() 두번째 파라미터에 우선순위 지정
// 두번째 파라미터가 없을 경우 즉시 실행해야 할 가장 높은 우선순위. 0부터 숫자가 커질 수록 우선순위가 낮아진다. 
validate
자원 객체가 유효한지 여부 확인. return ture 일 경우 풀링된 자원을 허용. flase 일 경우 자원을 파괴한다. 이 기능은 풀 자원을 반환하기 전 acquire() 에서 호출된다.
log
boolean/function, 함수인 경우 매개변수는 2개로 string, level(‘verbose’, ‘info’, warn’, ‘error’)이다.
true: 정보가 console.log에 전송된다.
false(기본값): 메세지는 무시된다.

Pool info

  • pool.getName(); // pool factory.name 반환
  • pool.getPoolSize() // pool 에서 사용중인 자원과 남은 자원 수를 반환
  • pool.availableObjectsCount() // pool에서 사용되지 않는 자원 수를 반환
  • pool.waitingClientsCount() // 취득(acquire)된 자원의 대기 수를 반환
  • pool.getMaxPoolSize() // 허용된 최대 자원 수를 반환


반응형

'lang > node' 카테고리의 다른 글

socket.io io.set, io.enable 설정  (0) 2015.10.09
nodejs ip module  (0) 2015.10.05
nvm-windows  (0) 2015.09.28
NVM - Node Version Manager  (0) 2015.09.25
__file, __line 사용 magic-globals  (0) 2015.09.24