Configuration

connectionTimeout

클라이언트가 커넥션을 요청한 이후에 커넥션을 얻기까지 기다릴 수 있는 최대 시간을 제어한다. 이 시간을 초과하면 SQLException 이 발생한다. 허용되는 최소값은 250ms 이며 기본값은 30,000ms (30초) 이다.

idleTimeout

커넥션이 유휴 상태(사용되지 않는 상태)로 유지될 수 있는 최대 시간을 제어한다. 이 설정은 minimumIdle 값이 maximumPoolSize 보다 작은 경우에만 적용된다. 설정된 시간 동안 커넥션이 사용되지 않으면 해당 커넥션은 커넥션풀에서 제거된다. 이 때 커넥션풀에 있는 유휴 상태의 커넥션이 miniumIdle 과 같다면 제거되지 않는다. 커넥션이 유휴 상태로 변경되는데에는 최대 +30초 에서 평균 +15초의 변동이 있을 수 있다. 이 값이 0이라면 유휴 커넥션을 제거하지 않는다. 이 값을 설정할 수 있는 최소값은 10,000ms (10초) 이며 기본값은 600,000ms (10분) 이다.

NOTE: 커넥션 사용 이후 커넥션풀에 커넥션을 다시 반환하면 해당 커넥션의 idle time 은 다시 0으로 초기화된다.

maxLifetime

커넥션풀에 커넥션이 존재할 수 있는 최대 수명을 제어한다. 이 시간을 초과하면 커넥션풀에 있는 커넥션을 제거한다. 이때 현재 사용중인 커넥션이라면 커넥션을 제거하지 않는다. 커넥션풀에 있는 커넥션의 대량 제거를 방지하기 위해서 커넥션별로 시간 차이를 두며 작동한다. 이 값은 데이터베이스의 연결 시간 제한(MySQL인 경우 wait_timeout) 보다 짧아야 하며 네트워크 지연을 고려하여 wait_timeout 설정보다 2~3초 정도 짧게 줄 것을 권고한다. 이 값이 0이라면 최대 수명이 없음 (무한 수명) 을 의미한다. 허용되는 최소 값은 30,000ms (30초) 이며 기본값은 1,800,000ms (30분) 이다.

NOTE: 커넥션 사용 여부와 관련 없이, 말 그대로 커넥션이 존재할 수 있는 최대 수명이다.

minimumIdle

최소 유휴 연결 수를 유지하기 위한 설정이다. 유휴 연결이 이 값보다 적어지고 총 커넥션이 maximumPoolSize 보다 작은 경우 HikariCP 는 빠르고 효율적으로 커넥션을 추가하기 위한 작업을 수행한다. 기본값은 maximumPoolSize 와 동일하다.

maximumPoolSize

유휴 커넥션과 사용 중인 커넥션을 모두 포함한 커넥션의 최대 수를 제어한다. 커넥션 요청시 유휴 커넥션이 없다면 connectionTimeout 만큼 차단되며, 이 시간동안 커넥션을 얻지 못할 시 SQLException 이 발생한다. 기본값은 10 이다.

참고

HikariCP README.md 참고