피드로 돌아가기
HikariCP: the p95 that lies to you and how to read the real pool signals
Dev.toDev.to
Database

Error Rate와 Latency 분리 분석을 통한 HikariCP 최적 설정 검증

HikariCP: the p95 that lies to you and how to read the real pool signals

Juan Torchia2026년 5월 15일12intermediate

Context

단일 p95 지표에 의존한 Connection Pool 튜닝 시 발생하는 데이터 왜곡 현상 분석. 특히 connectionTimeout 설정이 짧을 경우 Fast Failure로 인해 전체 Latency는 낮게 측정되나 실제 성공률이 급락하는 '지표의 함정' 발생.

Technical Solution

  • pg_sleep을 통한 Connection Hold Time 인위적 조절로 Pool 경합 상황 강제 생성
  • 모든 요청(all attempts)과 성공 요청(successful queries)의 Latency를 분리 측정하는 k6 스크립트 설계
  • maximumPoolSize와 connectionTimeout의 조합에 따른 처리량 및 에러율 상관관계 분석
  • 단순 성공/실패 여부를 넘어 active, idle, threadsAwaitingConnection 등 실시간 Pool 상태 모니터링 체계 구축
  • 다양한 시나리오(tiny ~ pool32)를 통한 Connection 수치별 성능 매트릭스 도출

1. p95 Latency가 갑자기 낮아졌을 때 Error Rate가 동반 상승하는지 확인하십시오.

2. Connection Hold Time(쿼리 실행 시간)과 예상 동시성(Concurrency)을 고려하여 maximumPoolSize를 산정하십시오.

3. DB 서버의 idle timeout보다 HikariCP의 maxLifetime을 짧게 설정하여 Closed Connection 오류를 방지하십시오.

4. 성공한 요청에 대해서만 Latency를 측정하는 필터를 적용하여 실제 사용자 경험을 측정하십시오.

원문 읽기