5.3. HikariCP 커넥션 풀
5.3.1. 개요
Spring Boot는 HikariCP를 기본 커넥션 풀로 사용합니다. 별도의 의존성 추가 없이 spring-boot-starter-jooq에 포함되어 있습니다.
5.3.2. 주요 파라미터
| 파라미터 | 기본값 | 권장값 | 설명 |
|---|---|---|---|
maximum-pool-size | 10 | 환경별 조정 | 최대 커넥션 수 |
minimum-idle | 10 | maximum-pool-size와 동일 | 최소 유휴 커넥션 수 |
connection-timeout | 30000 | 30000 (30초) | 커넥션 획득 대기 시간(ms) |
idle-timeout | 600000 | 600000 (10분) | 유휴 커넥션 유지 시간(ms) |
max-lifetime | 1800000 | 1800000 (30분) | 커넥션 최대 수명(ms) |
leak-detection-threshold | 0 | 60000 (1분) | 커넥션 누수 감지 임계값(ms) |
5.3.3. 환경별 pool-size 가이드
| 환경 | maximum-pool-size | 근거 |
|---|---|---|
| local | 5 | 개발 장비 부하 최소화 |
| dev | 10 | 기본값 |
| staging | 15 | 프로덕션 유사 환경 |
| prod | 20~30 | 트래픽 규모에 따라 조정 |
산정 공식
HikariCP 공식 권장 공식: pool_size = (core_count * 2) + effective_spindle_count
대부분의 경우 10~20 사이가 적절합니다. 과도한 커넥션 수는 오히려 성능을 저하시킵니다.
5.4. 프로파일별 데이터소스 설정
5.4.1. 공통 설정 (application.yml)
yaml
spring:
datasource:
hikari:
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
leak-detection-threshold: 600005.4.2. 로컬 환경 (application-local.yml)
yaml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/flowin
username: flowin
password: flowin1234
hikari:
maximum-pool-size: 55.4.3. 개발 환경 (application-dev.yml)
yaml
spring:
datasource:
url: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
hikari:
maximum-pool-size: 105.4.4. 프로덕션 환경 (application-prod.yml)
yaml
spring:
datasource:
url: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
hikari:
maximum-pool-size: 20
minimum-idle: 20필수
개발/스테이징/프로덕션 환경의 데이터베이스 접속 정보는 반드시 환경변수로 주입합니다. application.yml에 직접 기입하지 않습니다.