DB

DB 커넥션 풀 사이즈 설정 기준 - Java 개발자 기준

ZZJJing 2025. 6. 11. 16:29
반응형

커넥션 풀이란?

  • DB 연결을 미리 생성해서 풀에 저장
  • 요청 시 풀에서 가져다 쓰고 반납
  • 매번 새로 생성/삭제하는 오버헤드 제거

풀 사이즈가 중요한 이유

  • 너무 작으면: 대기 시간 증가, 성능 저하
  • 너무 크면: 메모리 낭비, DB 부하 증가
  • 적절한 균형점 찾는 것이 핵심

기본 설정 공식

최소 풀 사이즈 = CPU 코어 수
최대 풀 사이즈 = CPU 코어 수 × 2 ~ 4

[홈페이지 제작 기준 설정값]

소규모 개인 홈페이지

  • 최소: 2-5개
  • 최대: 10-20개
  • 동시 접속자 50명 이하

중소규모 회사 홈페이지

  • 최소: 5-10개
  • 최대: 20-50개
  • 동시 접속자 100-500명

대규모 서비스

  • 최소: 10-20개
  • 최대: 50-100개 이상
  • 부하 테스트 필수

HikariCP 설정 예시

# application.yml
spring:
  datasource:
    hikari:
      minimum-idle: 5
      maximum-pool-size: 20
      connection-timeout: 20000
      idle-timeout: 300000
      max-lifetime: 1200000

모니터링 체크 포인트

  • 활성 커넥션 수
  • 대기 중인 요청 수
  • 커넥션 생성/삭제 빈도
  • 응답 시간 변화

튜닝 팁

점진적 증가

  1. 작은 값으로 시작
  2. 부하 테스트 실행
  3. 단계별 증가
  4. 최적값 찾기

상황별 조정

  • 읽기 위주: 작은 풀 사이즈
  • 쓰기 위주: 큰 풀 사이즈
  • 배치 작업: 별도 풀 구성

주의사항

  • DB 최대 커넥션 수 확인 필수
  • 여러 앱이 같은 DB 사용시 총합 고려
  • 커넥션 누수 방지 (try-with-resources 사용)
  • 정기적인 모니터링과 조정

실제 운영 경험

  • 처음엔 작게 설정하고 점차 늘리기
  • 피크 시간대 모니터링 중요
  • 예상보다 적은 커넥션으로도 충분한 경우 많음
  • 애플리케이션 특성에 따라 천차만별
728x90
반응형