본문 바로가기
공부(~2016)/Server

톰캣 DBCP Attribute

by soy; 2015. 3. 4.

 Attribute

 Description

 Type

Default Value 

 defaultAutoCommit

기본값은 풀에 의해서 생성된다.

만약 설정되지 않으면, 기본값은 JDBC Driver의 기본값이다.

만약 이것도 설정되지 않으면 setAutoCommit 메소드는 호출되지 않을 것이다.


 boolean

 

 defaultReadOnly


기본값은 풀에 의해서 설정된다.

만약 설정되지 않으면 setReadOnly 메소드는 호출되지 않을 것이다.

read only 모드를 지원하지 않는 몇몇 드라이버도 있다. (예: Informix)

 boolean

 

 defaultTransactionIsolation

트랜잭션 격리상태. 기본값은 풀에 의해서 생성되는데, 다음 중의 하나이다.

- NONE

- READ_COMMITTED

- READ_UNCOMMITTED

- REPEATABLE_READ

 

- SERIALIZABLE

 String

 

 defaultCatalog

기본값은 풀에 의해서 설정된다.

 

 

 driverClassName

사용할 JDBC 드라이버의 fully qualified Java class name.

 String

 

 username

 

 String

 

 password

 

 String

 

 maxActive

동시간에 존재할 수 있는 active 커넥션의 최대 개수.

 int

 100

 maxIdle

커넥션풀 안에 남아있을 수 있는 idle 커넥션의 최대 개수.

evictor 쓰레드에 의하여 idle 커넥션은 주기적으로 체크되며, minEvictableIdleTimeMillis동안 idle인 커넥션은 해제된다.

 int

 100 (maxActive와 동일)

 minIdle

커넥션풀 안에 항상 남아있어야 하는 idle 커넥션의 최소 개수.

validation 쿼리가 실패할 경우 커넥션풀은 minIdle 이하로 축소될 수 있다.

 int

 initialSize 로부터 유도된다.

 initialSize

커넥션풀이 시작될 때 생성될 초기 커넥션 수

 int

 10

 maxWait

available한 커넥션이 없을 때, 커넥션을 반환받기 위해 커넥션풀이 wait할 수 있는 최대 시간

 int

 30000 (밀리초, =30초)

 testOnBorrow

커넥션풀에서 객체가 borrowed 될 때, 객체을 validation 할 지의 여부.

validate에 실패한 객체는 커넥션풀에서 삭제되며, 다른 객체로 다시 validate를 시도한다.


참고) true인 경우, 반드시 validationQuery가 설정되어야 한다. (null이 아닌 값으로)

보다 효율적인 validation을 위해서 validationInterval을 함께 사용 가능하다.


 boolean

false 

 testOnReturn

객체가 커넥션풀로 반납(return)될 때, 객체를 validation 할 지의 여부.

참고) true인 경우, 반드시 validationQuery가 설정되어야 한다. (null이 아닌 값으로)

 boolean

 false

 testWhileIdle

timeBetweenEvictionRunsMillis에 지정된 주기마다 evictor 쓰레드가 실행되는데, 이 evictor 쓰레드가 동작할 때 idle 객체를 validation 할 지의 여부.

validate에 실패한 객체는 커넥션풀에서 삭제된다.


참고) true인 경우, 반드시 validationQuery가 설정되어야 한다. (null이 아닌 값으로)

 boolean

 false

 validationQuery

커넥션의 연결 상태를 validate하기 위해 사용되는 SQL 쿼리.


mysql:  select 1

oracle:  select 1 from dual

 String

 null

 validationQueryTimeout

 validation 쿼리가 실패 처리되기까지의 타임아웃 시간 (초)


0 이하이면 타임아웃을 사용하지 않는다.

 int

 -1

 validatorClassName

커넥션 validate를 할 때 validation 쿼리를 사용하는 대신 Validator 인터페이스(org.apache.tomcat.jdbc.pool.Validator)를 구현한 클래스를 사용할 수 있다. 이 때 사용할 Validator 인터페이스를 구현한 콘크리트 클래스의 fully qualified Java class name을 지정한다.


 String

null 

 timeBetweenEvictionRunsMillis

evictor 쓰레드(validation/cleaner 쓰레드)를 실행시키는 주기.


참고) evictor 쓰레드의 역할 : 소스 참고하여 재확인 필요

- timeBetweenEvictionRunsMillis 동안 sleep한 후 동작한다.

- removeAbandoned이 true일 경우, 버려진 커넥션을 체크한다. borrow된지 removeAbandonedTimeout 이상  된 커넥션을 remove 한다.

- 현재 idle인 커넥션 수가 minIdle 값보다 크다면, minEvictableIdleTimeMillis시간 이상동안 idle 상태인 커넥션을 remove한다.

- testWhileIdle이 true일 경우, idle 상태인 커넥션을 validation하여 유효하지 않은 커넥션을 remove 한다.


1초 미만으로 설정할 수 없다.

 int

 5000 (5초)

 numTestsPerEvictionRun

 tomcat-jdbc-pool에서는 사용되지 않는다.

evictor 쓰레드의 각 실행마다 검사하는 객체의 개수

 int

 

 minEvictableIdleTimeMillis

 놀고있는 객체(idle 상태인 커넥션)가 커넥션풀에서 쫓겨나기까지의 최소 시간.

해당 시간(초) 동안 커넥션풀에서 idle 상태인 객체는 쫓겨날 수 있는 대상이 되며, minIdle, maxIdle 설정값을 고려하여 쫓겨나게 된다.

 int

 60000 (60초)

 accessToUnderlyingConnectionAllowed

사용되지 않음


DBCP에서 랩핑하기 이전의 원본 커넥션에 접근한다

 boolean

 

 removeAbandoned

 removeAbandonedTimeout에서 지정한 시간이 초과되었을 때 버려진 커넥션을 remove할지의 여부.

true로 설정하면, removeAbandonedTimeout에서 지정한 시간 이상 사용되지 않은 경우 커넥션이 버려졌고 제거해도 괜찮은 것으로 간주된다.


또한 커넥션을 제대로 close하지 않는 (잘못된) 응용프로그램으로부터 DB 커넥션을 복구할 수 있다.

 boolean

 false (logAbandoned와 마찬가지로)

 removeAbandonedTimeout

커넥션이 버려지기까지의 타임아웃 시간. 해당 시간(초)이 초과된 커넥션은 버려진다.


이 값은 어플리케이션 내에서 가장 오래걸리는 쿼리의 수행시간을 고려하여 설정하여야 한다.

 

 60 (초)

 logAbandoned

커넥션을 버리는(abandoned) application 코드를 찾기 위해서, 커넥션이 버려질 때의 stack trace를 로깅할지의 여부.

(true로 할 시, 커넥션을 열 때 stack trace를 생성해야 하므로 오버헤드가 증가한다)

 boolean

false

 connectionProperties

 새로운 커넥션을 establish 할 때, JDBC 드라이버로 전송될 커넥션 프로퍼티들.

문자열의 포맷은 반드시 다음과 같아야 한다. [propertyName=property;]


참고) "user"와 "password" 프로퍼티는 포함할 필요 없다.

 String

 null

 poolPreparedStatements

사용되지 않음


 

 maxOpenPreparedStatements

사용되지 않음

 

 

 

 

 

 


댓글