HikariCP에서 setMaxLifetime은 커넥션 풀 내의 커넥션이 얼마나 오래 사용할 수 있을지를 설정하는 중요한 파라미터입니다.
setMaxLifetime의 역할setMaxLifetime은 각 커넥션이 커넥션 풀에 반환되기 전에 최대 지속 가능한 시간을 지정하는 설정입니다.
즉, 커넥션 풀에 있는 커넥션은 이 시간이 지나면 자동으로 폐기되고, 새 커넥션이 다시 생성됩니다.
setMaxLifetime의 중요성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과 관련된 주요 고려사항데이터베이스의 타임아웃과 일치시킬 것
setMaxLifetime 값을 DB의 타임아웃 값보다 작게 설정하여 커넥션이 끊어지기 전에 교체되도록 해야 합니다.setMaxLifetime과 idleTimeout의 관계
maxLifetime은 커넥션의 전체 수명을 제한하는 설정입니다.idleTimeout은 사용되지 않고 풀에 대기하는 커넥션의 시간을 제한하는 설정입니다.maxLifetime을 30분으로 설정하고 idleTimeout을 10분으로 설정하면, 10분 동안 사용되지 않으면 커넥션이 폐기되지만, 30분이 지나면 사용 중이든 아니든 커넥션이 폐기됩니다.DB 서버와의 연결 상태
maxLifetime을 설정하는 것이 좋습니다. DB 서버가 일정 시간 후 자동으로 연결을 종료하는 경우, maxLifetime 값을 그 시간보다 짧게 설정하여 커넥션 풀에서 커넥션을 교체하도록 할 수 있습니다.setMaxLifetime 설정 예시config.setMaxLifetime(600000); // 10분
maxLifetime을 10분으로 설정합니다.config.setMaxLifetime(3600000); // 1시간
config.setMaxLifetime(86400000); // 24시간 (1일)
maxLifetime을 긴 시간으로 설정할 수 있습니다.maxLifetime의 주의점maxLifetime 설정은 너무 자주 커넥션을 교체하게 되어, 성능 저하를 초래할 수 있습니다.maxLifetime 설정은 오래된 커넥션을 계속해서 사용하게 되어, DB 연결 문제를 일으킬 수 있습니다.setMaxLifetime은 커넥션이 최대 몇 밀리초 동안 유효할지를 설정하는 파라미터로, 커넥션 풀 내에서 오래된 커넥션을 갱신하고, DB와의 안정적인 연결을 유지하는 데 중요한 역할을 합니다.maxLifetime 설정을 통해 성능과 안정성 모두를 고려할 수 있습니다.