본문 바로가기

Java

Apache Commons DBCP 환경설정 값

Apache Commons DBCP


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://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 이 갱신됨.