- @참고: 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에서 놀게 허용하는 최대 시간을 조정한다.
오직 minimumIdle 이 maximumPoolSize 보다 작게 정의된 경우에만 적용된다.
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 된다.
'DB' 카테고리의 다른 글
[Hibernate, Spring Framework] hibernate.hbm2ddl.auto 설정이 동작하는 시점 (0) | 2023.11.21 |
---|---|
트랜잭션 격리 수준 (0) | 2023.08.24 |
[Oracle Database 19c] restart (0) | 2023.05.25 |