봉 블로그

DBCP 설정 정리 본문

java

DBCP 설정 정리

idkbj 2013. 5. 14. 20:25

maxActive : 서비스에서 동시에 사용될수 있는 최대 커넥션 개수. (기본값 : 8)

- (maxAcive - maxIdle ) 개의 커넥션은 pool 에 반환되지 않고 제거(real destory) 된다.

maxIdle : 커넥션 풀에서 유지될수 있는 idle 상태 커넥션의 최대 개수. (기본값 : 8)

minIdle : 커넥션 풀에 유지되수 있는 idle 상태 커넥션의 최소 개수. (기본값 : 0)

maxWait : 커넥션 사용이 많아져서 커넥션 풀이 비었을때 사용할수 있는 커넥션을 반환받기까지 기다릴수 있는 최대시간 (ms) (기본값: -1, 무한대기)

validationQuery : 커넥션 풀에서 커넥션을 가져올때 해당 커넥션의 유효성 검증에 사용할 SQL Query (반드시 하나 이상의 row 가 반환될 SELECT 구분이어야 함.)

testOnBorrow : 커넥션 풀에서 커넥션을 가져올때 해당 커넥션의 유효성 검사를 할것인지 여부. (기본값 : true, 반드시 validationQuery 가 설정되어 있어야 함.)

testOnReturn : testOnBorrow 와 비슷함. 다만 유효성 검사 시점이 커넥션을 풀에 반환할때 이다.

testWhileIde : 커넥션 유효성 검사를 풀에 idle 상태에 존재할때 실시할것인지 여부 (기본값 : false, 반드시 validationQuery 가 설정되어 있어야 함.)

timeBetweenEvictionRunsMillis : 설정된 시간 간격마다 놀고 있는 커넥션을 풀에서 제거하는 evictor thread 가 실행된다. minIdle 로 커넥션을 유지한다.

numTestsPerEvictionRun : evictor thread 가 한번실행시 검사할 대상 커넥션 개수.

minEvictableIdleTimeMillis : evictor thread 작업시 설정된 시간만큼 사용되지 않은 커넥션을 제거한다. 그리고, thestWhileIdle 옵션이 true일 경우 설정된 시간을 초과하지 않은 커넥션에 대해서 validationQuery를 수행해서 유효하지 않은 커넥션을 제거한다.

evictor thread 는 마지막으로 minIdle 커넥션을 생성 유지시킴.

참고url : http://commons.apache.org/proper/commons-dbcp/configuration.html

 http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=40288

http://dimdim.tistory.com/entry/DBCP%EC%9D%98-%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%84%A4%EC%A0%95%EA%B0%92-%EA%B0%80%EC%9D%B4%EB%93%9C

 

tomcat DBCP
testWhileIdle="true" 해야 evitor가 timeBetweenEvictionRunsMillis 마다 validationQuery 작동 하며
minEvictableIdleTimeMillis 이상 사용되지 않은 connection은 validationQuery 대신 연결해제 시키고
새로운 connection 을 생성함.

ex) timeBetweenEvictionRunsMillis=30000 (30초), minEvictableIdleTimeMillis=60000 (60초) 이면
실제 90초 마다 idle connection 이 갱신됨.


jboss connection pool

check-valid-connection-sql, valid-connection-checker-class-name 2개설정이 되어있으면
valid-connection-checker-class-name 가 작동함. (버그가 좀 있음. 사용 안하는게 좋음.)
IdleRemover 는 idle-timeout-minutes 의 1/2 시간마다 idle connection 중에서 idle-timeout-minutes
시간동안 사용되자 않은것들을 연결해제 하고 새로운 connection을 생성함.

 

마지막으로 DBCP 는 2010년 2월 이후로 업데이트가 안되고 있으며, 좀더 성능이 좋은 Tomcat JDB Connection Pool 을 사용하는게 좋다는 의견이 있다.

참고 : http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html