낭만 프로그래머
Spring Boot 2.x 에서 HikariCP 문제점 해결 본문
* Possibly consider using a shorter maxLifetime value 라는 오류 발생
- Spring Boot 2.x 이상 에서는 기본적으로 Connection Pool로 HikariCP를 사용한다
1. 현재 Database 환경 설정을 확인
show variables like '%timeout'; |
2. Spring Boot 설정을 Database 설정보다 적게 해야 함 (application.properties 파일)
주의 : DB 단위 - s, Spring Boot 단위 - ms
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.maximumPoolSize=10
spring.datasource.hikari.poolName=SpringBootJPAHikariCP
spring.datasource.hikari.idleTimeout=10000
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.validation-timeout=10000
spring.datasource.hikari.maxLifetime=580000
spring.datasource.hikari.data-source-properties.cachePrepStmts=true
spring.datasource.hikari.data-source-properties.prepStmtCacheSize=250
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit=2048
spring.datasource.hikari.data-source-properties.useServerPrepStmts=true
spring.datasource.hikari.data-source-properties.useLocalSessionState=true
spring.datasource.hikari.data-source-properties.useLocalTransactionState=true
spring.datasource.hikari.data-source-properties.rewriteBatchedStatements=true
spring.datasource.hikari.data-source-properties.cacheResultSetMetadata=true
spring.datasource.hikari.data-source-properties.cacheServerConfiguration=true
spring.datasource.hikari.data-source-properties.elideSetAutoCommits=true
spring.datasource.hikari.data-source-properties.maintainTimeStats=false
** 참조 : https://javacan.tistory.com/entry/spring-boot-2-hikaricp-property
속성 |
설명 |
기본 값 |
connectionTimeout |
풀에서 커넥션을 구할 때 대기 시간을 밀리초 단위로 지정한다. 대기 시간 안에 구하지 못하면 익셉션이 발생한다. |
30000 |
validationTimeout |
커넥션이 유효한지 검사할 때 대기 시간을 지정한다. 이 값은 connectionTimeout보다 작아야 한다. |
5000 |
idleTimeout |
커넥션이 풀에서 유휴 상태로 남을 수 있는 최대 시간을 밀리초 단위로 지정한다. 이 값은 minimumIdle이 maximumPoolSize보다 작을 때만 적용된다. |
600000 |
maxLifetime |
커넥션의 최대 유지 시간을 밀리초 단위로 설정한다. 이 시간이 지난 커넥션 중에서 사용중인 커넥션은 종료된 이후에 풀에서 제거한다. |
1800000 (30분) |
maximumPoolSize |
유휴 상태와 사용중인 커넥션을 포함해서 풀이 허용하는 최대 커넥션 개수를 설정한다. 이 값은 데이터베이스에 대한 실제 커넥션의 최대 개수를 결정한다. |
10 |
minimumIdle |
풀에 유지할 유휴 커넥션의 최소 개수를 설정한다. |
maximumPoolSize와 동일 |
connectionTestQuery |
커넥션이 유효한지 검사할 때 사용할 쿼리를 지정한다. 드라이버가 JDBC4를 지원하면 이 프로퍼티를 설정하지 말자. 이 프로퍼티를 설정하지 않으면 JDBC4의 Conneciton.isValid()를 사용해서 유효한지 검사를 수행한다. |
없음 |
leakDetectionThreshold |
커넥션이 누수 가능성이 있다는 로그 메시지를 출력하기 전에 커넥션이 풀에서 벗어날 수 있는 시간을 밀리초로 설정한다. 0은 누수 발견을 하지 않는다. 허용하는 최소 값은 2000(2초)이다. |
0 |
'Java > Spring' 카테고리의 다른 글
Intellij에 Spring MVC 5 설치하기 (0) | 2021.09.28 |
---|---|
Spring Boot 기본 세팅 (DB + Mybatis + Log4j2) (0) | 2020.11.04 |
JSP에서 Invalid character 관련하여 400 에러가 발생시 (0) | 2020.04.14 |
Spring 에서 Interceptor 를 이용한 Session 처리 (0) | 2018.06.05 |
Eclipse (Neon)에 Spring 4 설치 (0) | 2016.09.30 |