본문으로 건너뛰기

HikariCP 커넥션 풀 크기, 정말 클수록 좋을까

풀 크기를 10에서 100까지 바꿔 가며 처리량과 지연 시간을 측정해 본 실험 기록

작성 수정 1분 읽기

목차

실험 배경

“커넥션이 부족하면 풀을 늘리면 된다”는 말을 자주 듣는다. 정말 그런지 직접 재 보았다.

측정 환경

  • PostgreSQL 16, 4 vCPU
  • Spring Boot 3, HikariCP 기본 설정
  • k6로 동시 사용자 200명
spring:
  datasource:
    hikari:
      maximum-pool-size: 20
      connection-timeout: 3000

결과

pool size p99 latency TPS
10 180ms 1,950
20 120ms 2,310
100 410ms 1,720

왜 100에서 느려졌나

DB 서버의 CPU 코어 수보다 훨씬 많은 커넥션이 동시에 쿼리를 돌리면 컨텍스트 스위칭과 락 경합이 늘어난다.

직접 돌려 보기

풀 크기를 키우면 처리량이 늘다가, DB 코어 수를 크게 넘어서면 오히려 응답이 느려진다.

커넥션 풀 시뮬레이터 · 새 창에서 열기

정리

connections = (core_count * 2) + effective_spindle_count 공식은 출발점일 뿐, 결국 측정이 답이다.