ACTIVE INCIDENT
00:00 elapsed
LABLAB-DB-12-CONNECTION-POOLSEV-2
커넥션 풀 고갈 진단 — max_connections·idle in transaction
ELAPSED
00:00
PHASE
0 / 3
SLA
40분
🗄️ Database
← 목록
INCIDENT RESPONSE
0 / 4 단계 완료
📚 PREREQUISITES
Labpostgresql-lock-deadlock
Theorydatabase/connection-pooling
Theorydatabase/transactions-acid
TRACK
DATABASE
SLA
40분
SEV
SEV-2
PHASES
2단계
ENV
local
INCOMING TICKET
슬랙 알람: "API가 'remaining connection slots are reserved' / 'too many clients' 에러를 쏟아냅니다. DB는 멀쩡해 보이는데 새 연결이 안 돼요. 트래픽은 평소 수준입니다."
YOUR ROLE
주니어 인프라 엔지니어
IMPACT IF UNRESOLVED
커넥션 슬롯 고갈로 신규 연결 거부 — 전체 API가 DB 연결 실패로 5xx. DB 자원은 남는데 연결 수 한계로 서비스 다운
🚨INCIDENT BRIEF
API가 DB 연결 에러를 쏟아냅니다.
"FATAL: remaining connection slots are reserved / sorry, too many clients already 에러가 계속 떠요. DB 서버 CPU랑 메모리는 멀쩡한데 새 연결만 안 돼요. 트래픽은 평소랑 비슷한데 왜 연결이 다 찼을까요?"
DB 자원은 남는데 "연결 수" 한계에 부딪힌 상황입니다. pg_stat_activity로 현재 연결 수와 상태 분포를 확인해 "정상 트래픽이 많아서"인지 "idle in transaction 세션이 누수돼 쌓여서"인지를 가립니다. max_connections 한계를 이해하고, 애플리케이션 풀과 PgBouncer 관점에서 근본 대응을 도출합니다.
⏱ 40분📊 중급🔧 2단계#postgresql#connection-pool#max-connections#idle-in-transaction
MISSION
1
연결 수와 상태 분포 확인
pg_stat_activity로 현재 연결 수, max_connections 대비 사용률, state별 분포를 확인해 고갈 원인을 좁힌다
2
누수 세션 정리 + 재발 방지 (타임아웃·풀 설계)
idle in transaction 누수 세션을 정리해 즉시 복구하고, idle_in_transaction_session_timeout과 풀 설계로 재발을 막는다
📌 선수 지식
ℹ️ 실습 환경
환경: local
필요 도구: bash, postgresql, psql
검증 스크립트: /labs/lab-db-12-connection-pool/scripts/verify.sh
🔒
실습 실행은 Pro 플랜 전용입니다
인시던트 브리프와 학습 자료는 지금 바로 확인할 수 있습니다. 실제 실습 진행 및 터미널 사용은 Pro 플랜에서 가능합니다.
Pro로 업그레이드 →
>_ LAB TERMINAL↔ 너비 조절
NOTES