개발

HikariCP 튜닝하기 (too many connections 오류 해결)

snow-line 2021. 4. 7. 18:02
반응형

HikariCP를 기본 설정으로 넣고 사용 할 경우에는 DB에서 too many connections 에러가 발생할 수 있어 설정 값을 변경해야 합니다.

HikariConfig hikariConfig = new HikariConfig();

hikariConfig.setMinimumIdle(10);

hikariConfig.setMaximumPoolSize(10);

hikariConfig.setConnectionTestQuery("SELECT 1");

hikariConfig.setPoolName(poolName);

hikariConfig.setDriverClassName(this.driverClassName);

hikariConfig.setJdbcUrl(jdbcUrl);

hikariConfig.setUsername(this.dataSourceUserName);

hikariConfig.setPassword(this.dataSourcePassword);

//  3초 - pool 에서 커넥션을 얻어오기전까지 기다리는 최대 시간
hikariConfig.setConnectionTimeout(3000);

//  3초 - valid 쿼리로 커넥션 유효 여부 검사할 때 대기 시간
hikariConfig.setValidationTimeout(3000);

//  3초 - pool 에서 일을 안하는 커넥션을 유지하는 시간, minimumIdle 이 maximumPoolSize 보다 작을 때만 적용
//  hikariConfig.setIdleTimeout(3000);

//  58초 - 커넥션 풀에서 살아있을 수 있는 커넥션의 최대 수명 시간
hikariConfig.setMaxLifetime(58000);

return new HikariDataSource(hikariConfig);

- 최적의 성능을 내기 위해서는 setMinimumIdle / setMaximumPoolSize 값을 동일하게 설정해야 합니다.

 

- setMinimumIdle / setMaximumPoolSize 값을 다르게 설정할 경우에는 setIdleTimeout 주석을 해제 해야 합니다.

 

- DB에서 too many connections 에러가 발생하는 이유는 MaxLifetime 값이 DB 설정값보다 길게 잡혀서 발생하므로 최대 수명 시간 조정이 필요합니다.

 

 

 

 

반응형