[HikariCP] Configuration

DB 2022. 3. 25. 16:57

- @참고: https://github.com/brettwooldridge/HikariCP#artifacts

 

유용하게 쓰일만한 설정 몇가지를 짚어본다.

 

⏳connectionTimeout

이 property는 client가 pool로부터 connection을 기다리는 최대 miliseconds를 통제한다. 사용 가능한 connection을 받지 못하고 이 시간이 초과되면, SQLException이 thrown 된다.

최소 connection timeout 시간은 250 ms 이다.

Default: 30000 (30 sec)

 

⏳idleTimeout

이 property는 connection이 pool에서 놀게 허용하는 최대 시간을 조정한다.

오직 minimumIdlemaximumPoolSize 보다 작게 정의된 경우에만 적용된다. 

pool size가 minimumIdle과 같아지면 idle connection이 해제 되지 않는다.

연결이 idle(유휴) 상태에서 만료되는지되는 지 여부는 최대 +30초 변동성 및, 평균 +15초의 변동성이 있다. 이 시간 전에는 만료되지 않는다.

값이 0이면 idle connection은 절대 pool에서 제거 되지 않는다.

최소 값은 1000ms(10 sec) 이며, Default: 600000ms(10 min) 이다.

 

⏳keepaliveTime

이 property는 HikariCP가 database 나 network infrastructure에 의해 time out 되지 않게 하기 위해 얼마나 자주 connection을 살리기 위해 시도할 건지를 통제한다.

이 값은 maxLifetime 값보다 작아야 한다. (살아있는지 물으려면 죽기 전이여야 할 것이다.)

"keepalive"은 오직 idle connection에만 발생한다. 

connection이 "keepalive" 시간이 되면, connection은 pool에서 제거 되고, "pinged" 된 후 다시 pool로 반환된다.

"ping"은 다음 중 하나다.

JDBC4의 isValid() 메소드 호출이거나 connectionTestQuery 의 실행이다.

최소 값은 30000ms (30 sec) 이고, 분 단위가 가장 바람직하다. Default: 0 (disabled. 즉, 비활성화되는 값이다.)

 

⏳maxLifetime

이 property는 pool에 있는 connection의 최대 lifetime을 통제한다.

이 값을 세팅하길 강력히 추천하고, database나 infrastructure에서 부과한 connection time limit 보다 몇초 짧아야 한다.

0 값은 infinite lifetime 이며, idleTimeout 에 따른다.

최소 값은 30000ms (30 sec) 이며, Default: 180000 (30 min) 이다.

 

🔢minimumIdle

이 property는 HikariCP가 pool에 유지하는 idle connection의 최소 숫자를 통제한다.

만약 idle connection이 이 값 아래로 떨어지고 pool 의 총 connection 이 maximumPoolSize 미만이면, HikariCP 는 재빨리, 효과적으로 connction을 추가한다.

그러나, 최대 성능과 급증한 요구에 대한 응답을 위해, 이 값을 설정하지 말고, HikariCP가 고정 connection pool을 행하게 하는 걸 추천한다.

기본값: maximumPoolSize 값이다.

 

🔢maximumPoolSize

이 property는 idle 과 사용중인 connection을 통틀어 도달 가능한 최대 pool size를 통제한다. 기본적으로 이 값은 database backend에 대한 실제 connection 의 최대 개수를 결정한다.

합리적인 값은 실행환경에 의해 결정된다.

pool 이 이 사이즈에 도달하고, 사용가능한 idle connection이 없으면, getConnection() 호출은 time out 되기 까지 connectionTimeout milliseconds 만큼 block 된다.

블로그 이미지

uchacha

개발자 일지

,