Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- JavaScript
- auth
- observability
- CSS
- database
- reliability
- Security
- react
- PostgreSQL
- 버전관리
- Ops
- 성능
- DevOps
- SRE
- backend
- web
- Debugging
- NextJS
- version-control
- Infra
- frontend
- HTTP
- Kubernetes
- aws
- architecture
- API
- CI
- Git
- Performance
- Operations
Archives
- Today
- Total
고민보단 실천을
PostgreSQL 커넥션 고갈 디버깅: HikariCP pool size 계산과 timeout 튜닝 본문
PostgreSQL 커넥션 고갈 디버깅: HikariCP pool size 계산과 timeout 튜닝
커넥션 고갈은 SQL을 AI에 물어봐도 해결되지 않는 운영 이슈입니다. 풀을 키우기 전에 '점유 시간이 긴 쿼리/트랜잭션'을 먼저 확인해야 합니다. 이 글은 HikariCP 설정과 디버깅 포인트를 정리합니다.
옵션/핵심 요소(3~6개)
| 항목 | 의미 | 언제 쓰는지(실무 상황) |
|---|---|---|
| maximumPoolSize | 최대 커넥션 | DB max connections와 인스턴스 수로 계산 |
| connectionTimeout | 대기 한도 | 고갈 시 빠르게 실패시켜 전파 통제 |
| leakDetectionThreshold | 누수 감지 | 반납 누락 추적 |
| slow query | 점유 시간 | 긴 쿼리/트랜잭션이 풀을 잠식 |
| observability | 지표/로그 | 활성/대기/대기시간을 대시보드로 관리 |
예시(개념)
// 풀 크기 힌트(개념)
dbMax=200, appInstances=10 => perInstancePool 12~16 정도(여유 포함)문제 상황(정확히 1개)
상황: 트래픽이 늘면 Connection is not available 타임아웃이 발생한다
원인: 풀 사이즈가 작거나(혹은 더 흔하게) 긴 쿼리/긴 트랜잭션이 커넥션을 오래 점유해 풀이 고갈된다
해결: 느린 쿼리/트랜잭션을 먼저 줄이고, 누수 탐지를 켠 뒤, DB 용량과 인스턴스 수에 맞춰 풀을 조정한다
예방 팁: 풀 지표와 DB 지표를 함께 모니터링하고, 고갈 원인을 즉시 식별할 수 있게 한다
참고/출처
Comments
