개발은 하는건가..

[Springboot] DB Pool 설정 (hikari pool) 본문

SpringBoot , Thymeleaf

[Springboot] DB Pool 설정 (hikari pool)

수동애비 2022. 2. 9. 10:32
반응형

Hikari Pool 사용시 해당하는 DB pool 설정 입니다.

application.properties 파일에 다음과 같은 항목들을 설정합니다.

# pool 요청 타임아웃, 최대 풀 개수가 모두 사용 중일 경우 대기 시간 (ms 단위)
spring.datasource.hikari.connection-timeout=20000

# 커넥션이 유요한지 검사 시 대기 시간, connectionTimeout 보다 작아야 한다 (ms 단위)
spring.datasource.hikari.validation-timeout=10000

# 최대 풀 갯수
spring.datasource.hikari.maximum-pool-size=6

# 최소 유지 풀 갯수 (기본:maximum-pool-size)
spring.datasource.hikari.minimum-idle=6

# minimum-idle 을 초과하는 connection 은 이 시간 만큼 idle 로 존재하다 폐기됨. (ms 단위, 기본:10분)
spring.datasource.hikari.idle-timeout=600000

# connection TEST query (JDBC4 를 지원하는 경우 사용하지 않는 것을 권고)
spring.datasource.hikari.connection-test-query=SELECT 1

# pool 의 lifetime 설정 (ms 단위)
spring.datasource.maxLifetime=59000

 

* springboot 내에 hikari pool 이 기본 내장된 경우  .hikari. 를 빼고 그냥 spring.datasource.maximum-pool-size=20 식으로 설정해야 설정값이 적용된다.

* maxLifetime 를 설정 안할 경우 기본 580초인데   DB 서버들은 보통 60초로 되어있는 경우가 많아 아래와 같은 에러가 pool 갯수 만큼 발생할 수 있다. 그러므로 DB 서버의 wait_timeout 설정 값을 확인 후 그 이하로 설정해줘야 에러가 안남.

HikariPool-1 - Failed to validate connection org.mariadb.jdbc.MariaDbConnection@391cbc94 ((conn=3695) Connection.setNetworkTimeout cannot be called on a closed connection). Possibly consider using a shorter maxLifetime value.

 

Comments