시냅스

HikariCP 설정과 유의사항 본문

Java, Spring

HikariCP 설정과 유의사항

ted k 2023. 5. 3. 00:22

HikariCP 설정과 유의사항

  • maxLifetime
    • 커넥션을 최대 얼마동안 연결 유지 할지에 대한 설정
    • maxLifetime 에 도달한 커넥션이 사용 중(in-use)이지 않고, 풀에 반납된 상태에서 제거된다.
      • 만약 커넥션이 제거되어 부족한 경우 부족한 커넥션 만큼 새로 생성한다.
      • 이러한 방식은 wait_timeout 에 의해 커넥션이 끊어졌을 경우를 대비한다.
      • 즉 wait_timeout 으로 커넥션이 끊기기를 대비하여 커넥션을 새로 맺는 것
    • HikariCp 는 네트워크 지연을 고려하여 maxLifetime 을 db의 wait_timeout 설정보다 2 ~ 3초 정도 짧게 줄 것을 권고한다.
      • wait_timeout 이 60초라면 maxLifetime 은 58초가 된다.
      • 만약 maxLifetime 이 wait_timeout 보다 크다면, 실제로 wait_timeout 에 의해 커넥션이 끊겼음에도 hikaricp 는 여전히 연결이 유효하다고 가정하고 이는 장애로 이어진다.
  • idleTimeout
    • 유휴 상태인 커넥션들의 유지시간
    • idleTimeout 을 넘기면 연결을 해제한다.
    • 실행조건
      • minumumIdle < maximumPoolsize
      • maxLifetime - 1 > idleTimeout
  • connectionTimeout
    • 커넥션을 구할때까지 기다리는 시간
    • 허용 가능한 wait time 을 초과하면 SQLException 을 던진다.
  • minimumIdle
    • 커넥션 풀에서 유지할 최소 유휴 커넥션의 최소 개수
    • 최적의 성능과 응답성을 요구한다면 이 값을 설정하지 않는 게 좋다.
      • 커넥션을 줄였다 늘였다 할 때 성능 저하를 유발한다.
    • default 는 maximumPoolSize 와 동일하다
    • 즉 minimum 과 maximum 을 동일하게 하여 고정한다.
  • maximumPoolSize
    • 유휴 상태 + 사용중인 커넥션의 총합 최대 개수 설정 (Pool 에서 사용하는 최대 커넥션 수)
  • validationTimeout
    • 커넥션의 유효성 검사에 대한 타임아웃 설정
    • 이 시간 내에 유효성 검사가 완료되지 않으면 유효하지 않은 것으로 간주
    • 단위는 밀리초이며, 기본값은 5,000ms
  • initializationFailTimeout
    • 커넥션 풀 초기화 실패에 대한 타임아웃 설정값
    • 이 시간 내에 초기화가 완료되지 않으면 HikariCP는 풀 생성에 실패한 것으로 간주하고 예외를 발생시킴
  • dataSource
    • 사용할 DataSource 구현체를 설정
Comments