CPU, TPS, 쿼리시간 기준으로 HikariCP pool size 산정하기
Spring Boot 애플리케이션에서 DB 성능 문제의 상당수는 커넥션 풀 설정에서 시작됩니다.
많은 개발자가 다음처럼 설정합니다.
datasource:
hikari:
maximum-pool-size: 10
하지만 이 값은 서버 환경, DB 성능, 트래픽에 따라 달라져야 합니다.
이번 글에서는 HikariCP 커넥션 풀 크기를 실무적으로 계산하는 방법을 설명합니다.
1. 커넥션 풀은 동시 DB 작업 수를 의미한다
커넥션 풀은 다음 의미입니다.
예
의미
구조
↓
Spring Thread
↓
HikariCP Pool
↓
Database
2. 가장 기본 공식 (CPU 기반)
많은 시스템에서 다음 공식으로 시작합니다.
예
추천 pool
왜냐하면 DB 작업은 대부분
상태가 있기 때문입니다.
즉 CPU보다 약간 많은 커넥션이 필요합니다.
3. TPS 기준 계산 방법
조금 더 정확하게 계산하려면 TPS와 쿼리 시간을 사용합니다.
공식
예제
서비스
평균 쿼리 시간 = 50ms
계산
필요 커넥션
안전하게
정도로 설정합니다.
4. 느린 쿼리가 많을 때
예
평균 쿼리 시간 = 300ms
계산
즉
필요합니다.
이 경우 문제는 보통 쿼리 최적화입니다.
5. DB max connection 고려
PostgreSQL 기본값
하지만 DB는
replication
monitoring
등을 사용합니다.
그래서 보통
정도는 남겨야 합니다.
계산 예
사용 가능
애플리케이션 서버
가능한 pool
따라서
6. MSA 환경에서 문제
마이크로서비스 환경에서는 문제가 더 커집니다.
예
service B
service C
service D
각각
이면
DB 커넥션이 사용됩니다.
MSA에서는 DB 커넥션 설계가 중요합니다.
7. 너무 큰 커넥션 풀의 문제
많은 개발자가 이렇게 생각합니다.
하지만 그렇지 않습니다.
문제
메모리 증가
lock contention 증가
결과
그래서 커넥션 풀은 최소한으로 설정하는 것이 좋습니다.
8. 실무 추천 값
일반적인 Spring Boot 서비스 기준
TPS = 100 ~ 300
추천
datasource:
hikari:
maximum-pool-size: 15
minimum-idle: 5
connection-timeout: 30000
max-lifetime: 1800000
9. 모니터링은 필수
커넥션 풀 설정은 한 번 정하고 끝나는 것이 아닙니다.
다음 지표를 항상 봐야 합니다.
Idle Connections
Pending Threads
Spring Boot Actuator + Prometheus + Grafana로 확인할 수 있습니다.
정리
HikariCP 커넥션 풀 크기는 단순한 숫자가 아니라 시스템 전체 성능에 영향을 주는 핵심 설정입니다.
설정할 때 반드시 고려해야 할 요소는 다음입니다.
TPS
쿼리 실행 시간
DB max_connections
서버 수
✔ 핵심 한 줄
'DB' 카테고리의 다른 글
| JPA를 사용하면 성능이 느려진다고 하는 이유(N+1문제) (2) | 2026.03.11 |
|---|---|
| Spring Boot에서 @Transactional을 잘못 쓰면 생기는 7가지 문제 (0) | 2026.03.11 |
| Spring Boot HikariCP 설정을 잘못하면 발생하는 5가지 장애 (0) | 2026.03.11 |
| Spring Boot HikariCP 커넥션 풀 설정 실무 가이드 (0) | 2026.03.11 |
| 자바 백엔드 성능 최적화의 시작, HikariCP 제대로 알고 쓰기 (0) | 2026.03.11 |
