Spring JPA에서 데이터베이스 연결 풀의 기본 값
Spring JPA에서 데이터베이스 연결 풀의 기본 값은 HikariCP가 기본 연결 풀로 설정되어 있으며, HikariCP의 기본 설정이 적용됩니다. Spring Boot는 2.0 버전 이후부터 HikariCP를 기본 연결 풀로 사용합니다.
HikariCP의 기본 설정 값
HikariCP의 주요 설정과 기본값은 다음과 같습니다:
설정 키 | 기본값 | 설명 |
---|---|---|
maximumPoolSize |
10 | 최대 연결 수. HikariCP가 유지할 수 있는 최대 커넥션 수. |
minimumIdle |
same as maximumPoolSize |
풀에서 유지할 최소 유휴 연결 수. 기본적으로 maximumPoolSize 와 동일합니다. |
idleTimeout |
600000ms (10분) | 유휴 연결을 유지하는 시간. 초과하면 연결이 종료됩니다. 0으로 설정하면 비활성화됩니다. |
connectionTimeout |
30000ms (30초) | 풀에서 연결을 가져오는데 대기할 최대 시간. 이 시간 안에 연결을 가져오지 못하면 예외 발생. |
maxLifetime |
1800000ms (30분) | 연결이 풀에서 제거되기 전 최대 수명. 데이터베이스 세션 시간 초과 값보다 작게 설정 권장. |
validationTimeout |
5000ms (5초) | 연결 유효성 검사에 사용할 최대 시간. |
autoCommit |
true | 연결이 풀에서 반환될 때 자동 커밋 여부. |
Spring Boot의 기본 연결 풀 설정 확인
Spring Boot의 기본 설정은 HikariCP의 기본값과 동일하며, application.properties
또는 application.yml
에서 설정하지 않으면 위 값이 적용됩니다.
확인 방법
Spring Boot 애플리케이션에서 기본 설정을 확인하려면 다음과 같은 방식으로 로깅을 활성화하거나, 설정 값을 직접 확인할 수 있습니다:
로깅을 통해 확인
application.properties
에 다음 로깅 설정을 추가합니다:logging.level.com.zaxxer.hikari=DEBUG logging.level.org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration=DEBUG
애플리케이션 시작 시 기본 연결 풀 설정이 로그로 출력됩니다.
HikariDataSource
Bean 확인
애플리케이션 실행 중 HikariDataSource의 설정을 코드로 확인할 수도 있습니다:@RestController public class DataSourceController { @Autowired private DataSource dataSource; @GetMapping("/datasource-info") public String getDataSourceInfo() { HikariDataSource hikariDataSource = (HikariDataSource) dataSource; return String.format("Max Pool Size: %d, Min Idle: %d, Idle Timeout: %d, Max Lifetime: %d", hikariDataSource.getMaximumPoolSize(), hikariDataSource.getMinimumIdle(), hikariDataSource.getIdleTimeout(), hikariDataSource.getMaxLifetime()); } }
기본 설정을 변경하는 방법
application.properties
또는 application.yml
에서 HikariCP의 기본값을 필요에 따라 조정할 수 있습니다.
예시: application.properties
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=300000 # 5분
spring.datasource.hikari.connection-timeout=10000 # 10초
spring.datasource.hikari.max-lifetime=600000 # 10분
예시: application.yml
spring:
datasource:
hikari:
maximum-pool-size: 20
minimum-idle: 5
idle-timeout: 300000 # 5분
connection-timeout: 10000 # 10초
max-lifetime: 600000 # 10분
주의사항
적절한 연결 수 설정
기본값(10개의 최대 연결)은 작은 규모의 애플리케이션에는 적합하지만, 동시 요청이 많은 애플리케이션에서는 병목이 발생할 수 있습니다. 예상 동시 사용자 수와 워크로드에 따라maximumPoolSize
를 늘리는 것이 중요합니다.DB 서버와의 연결 제약
MySQL이나 다른 데이터베이스의max_connections
설정보다maximumPoolSize
가 높으면 오류가 발생할 수 있습니다. 이 값을 데이터베이스 서버 설정과 일치시키거나 그보다 낮게 유지하세요.Connection Timeout 설정
connectionTimeout
은 풀에서 연결을 가져오지 못할 때 대기할 최대 시간입니다. 너무 짧으면 연결 부족 시 애플리케이션이 실패할 수 있고, 너무 길면 사용자 경험에 영향을 줄 수 있습니다.
요약
- Spring JPA에서 기본 연결 풀은 HikariCP이며, 주요 기본값은:
- 최대 연결 수 (
maximumPoolSize
): 10 - 최소 유휴 연결 수 (
minimumIdle
): 10 - 유휴 연결 시간 (
idleTimeout
): 10분 - 최대 수명 (
maxLifetime
): 30분 - 연결 대기 시간 (
connectionTimeout
): 30초
- 최대 연결 수 (
- 필요에 따라 연결 풀 크기를 조정하며, 애플리케이션 요구사항과 DB 서버 설정에 맞추는 것이 중요합니다.
댓글
댓글 쓰기