HikariCP maxLifeTIme 값 자세한 설명

백엔드&인프라 추종자·2025년 1월 29일

학원 HRD 과제 삽질

목록 보기
4/7

HikariCP에서 setMaxLifetime커넥션 풀 내의 커넥션이 얼마나 오래 사용할 수 있을지를 설정하는 중요한 파라미터입니다.

setMaxLifetime의 역할

setMaxLifetime각 커넥션이 커넥션 풀에 반환되기 전에 최대 지속 가능한 시간을 지정하는 설정입니다.
즉, 커넥션 풀에 있는 커넥션은 이 시간이 지나면 자동으로 폐기되고, 새 커넥션이 다시 생성됩니다.

기본값:

  • 30분 (1800000ms): 기본값은 30분입니다.
    이 시간 동안 커넥션이 풀 내에서 유효하며, 그 후에는 커넥션이 닫히고 새로운 커넥션이 생성됩니다.

setMaxLifetime의 중요성

  • 최대 수명이 지나면 커넥션을 교체하는 이유는 오래된 커넥션이 데이터베이스 서버와의 연결에서 문제가 발생할 수 있기 때문입니다.
    • 예를 들어, 네트워크 이슈나 DB 서버의 타임아웃 정책, 커넥션 안정성 문제 등이 있을 수 있습니다.
  • 커넥션 리소스를 신선하게 유지하기 위한 방법으로, 정기적으로 커넥션을 갱신함으로써 DB와의 안정적인 연결을 유지할 수 있습니다.

setMaxLifetime 설정

HikariConfig config = new HikariConfig();
config.setMaxLifetime(1800000); // 30분 (1800000ms)
  • 시간 단위: setMaxLifetime밀리초(ms) 단위로 설정합니다.
  • 이 값은 풀에 있는 커넥션이 얼마나 오랫동안 유효할지를 설정합니다.

기본적인 설정과 예시

HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("root");
config.setPassword("password");
config.setMaximumPoolSize(10);

// 커넥션의 최대 수명 설정 (30분)
config.setMaxLifetime(1800000); // 30분

// 커넥션 풀을 초기화
HikariDataSource dataSource = new HikariDataSource(config);

setMaxLifetime과 관련된 주요 고려사항

  1. 데이터베이스의 타임아웃과 일치시킬 것

    • DB 서버가 일정 시간이 지나면 커넥션을 끊는 타임아웃 정책을 설정할 수 있습니다.
    • 이 경우, setMaxLifetime 값을 DB의 타임아웃 값보다 작게 설정하여 커넥션이 끊어지기 전에 교체되도록 해야 합니다.
  2. setMaxLifetimeidleTimeout의 관계

    • maxLifetime은 커넥션의 전체 수명을 제한하는 설정입니다.
    • idleTimeout사용되지 않고 풀에 대기하는 커넥션의 시간을 제한하는 설정입니다.
    • 예를 들어, maxLifetime을 30분으로 설정하고 idleTimeout을 10분으로 설정하면, 10분 동안 사용되지 않으면 커넥션이 폐기되지만, 30분이 지나면 사용 중이든 아니든 커넥션이 폐기됩니다.
  3. DB 서버와의 연결 상태

    • DB 서버의 연결 상태에 따라 maxLifetime을 설정하는 것이 좋습니다. DB 서버가 일정 시간 후 자동으로 연결을 종료하는 경우, maxLifetime 값을 그 시간보다 짧게 설정하여 커넥션 풀에서 커넥션을 교체하도록 할 수 있습니다.

setMaxLifetime 설정 예시

1. DB 서버와 동일한 타임아웃을 설정

config.setMaxLifetime(600000); // 10분
  • DB 서버에서 커넥션 타임아웃이 10분으로 설정되어 있다면, 커넥션 풀에서 커넥션이 끊어지기 전에 이를 교체하기 위해 maxLifetime을 10분으로 설정합니다.

2. 긴 시간 동안 유지되는 커넥션 풀

config.setMaxLifetime(3600000); // 1시간
  • DB 서버가 커넥션을 1시간 동안 유지하도록 설정되어 있다면, 풀에서 커넥션을 갱신하는 시간을 1시간으로 맞출 수 있습니다.

3. 커넥션 풀을 너무 짧은 시간에 교체하지 않도록 설정

config.setMaxLifetime(86400000); // 24시간 (1일)
  • 만약 커넥션을 긴 시간 동안 유지하고자 한다면, maxLifetime을 긴 시간으로 설정할 수 있습니다.

maxLifetime의 주의점

  • 짧은 maxLifetime 설정너무 자주 커넥션을 교체하게 되어, 성능 저하를 초래할 수 있습니다.
  • 반대로, maxLifetime 설정오래된 커넥션을 계속해서 사용하게 되어, DB 연결 문제를 일으킬 수 있습니다.

결론

  • setMaxLifetime커넥션이 최대 몇 밀리초 동안 유효할지를 설정하는 파라미터로, 커넥션 풀 내에서 오래된 커넥션을 갱신하고, DB와의 안정적인 연결을 유지하는 데 중요한 역할을 합니다.
  • DB 서버의 타임아웃 정책과 일치시키는 것이 중요하며, 적절한 maxLifetime 설정을 통해 성능과 안정성 모두를 고려할 수 있습니다.
profile
AI 답변 글을 주로 올립니다.

0개의 댓글