피드로 돌아가기
HikariCP: el p95 que te miente y cómo leer las señales reales del pool
Dev.toDev.to
Database

HikariCP p95 지표의 함정과 Error Rate 기반의 Connection Pool 최적화 분석

HikariCP: el p95 que te miente y cómo leer las señales reales del pool

Juan Torchia2026년 5월 15일12intermediate

Context

전통적인 p95 Latency 지표만으로는 Connection Pool의 실제 병목 지점 파악이 불가능한 한계 존재. 특히 짧은 connectionTimeout 설정 시, 요청 거절로 인한 낮은 Latency가 시스템 성능 향상으로 오인되는 'Fast Failure' 현상 발생.

Technical Solution

  • pg_sleep을 통한 인위적 Connection Retention 환경을 구축하여 Pool Pressure 가시화
  • Total Duration과 Success Duration을 분리 측정하여 Error Rate에 따른 Latency 왜곡 제거
  • maximumPoolSize, connectionTimeout, Query Delay의 상관관계를 통한 실험 매트릭스 설계
  • Active Connection과 ThreadsAwaitingConnection 지표를 교차 분석하여 Pool 포화도 측정
  • Connection Timeout 설정값에 따른 'Heap Overflow(긴 타임아웃)'와 'High Error Rate(짧은 타임아웃)'의 트레이드오프 검증

Impact

  • Tiny Pool(Size 2, Timeout 250ms) 환경에서 p95 260.78ms 기록했으나 실제 Error Rate 97.05%로 확인
  • 성공한 쿼리의 실제 p95는 752.51ms로 측정되어 단순 p95 지표 대비 약 3배의 성능 차이 발견
  • Pool Size 16 이상에서 500ms Delay 상황 시 Error Rate 0.05% 이하의 안정적 처리 능력 확인

Key Takeaway

단일 Latency 지표는 시스템의 건강 상태를 대변하지 못하며, Error Rate, Success Throughput, Active/Waiting Connection의 4가지 지표를 통합 분석해야 정확한 Connection Pool 사이즈 결정이 가능함.


- p95 Latency 확인 시 반드시 해당 구간의 Error Rate를 함께 검토할 것 - Connection Pool 사이즈 결정 시 예상 Concurrency와 쿼리 평균 유지 시간을 곱하여 산정할 것 - 인프라 환경의 Server Connection Timeout보다 HikariCP의 maxLifetime을 짧게 설정하여 PSQLException 방지 - 단순 응답 속도가 아닌 '성공한 요청의 Latency'를 별도 메트릭으로 분리하여 모니터링할 것

원문 읽기