41장. 장애 훈련 — DB pool이 고갈됐다
증상은 API timeout, pending connection 증가, thread 대기, ALB 5xx로 나타난다. 먼저 deployment 직후인지, 느린 query·lock·connection leak·DB limit·HPA 증설 중 무엇인지 dashboard와 DB session으로 좁힌다. 무작정 pool과 pod를 늘리면 DB를 더 압박한다. 신규 비핵심 요청을 제한하고 긴 transaction과 lock owner를 확인한다.
실습은 외부 호출을 transaction 안에서 지연시켜 pool을 점유하게 만든다. load를 올려 alert와 readiness 반응을 본 뒤, 호출을 transaction 밖으로 분리하고 timeout·bulkhead를 적용한다. 전후 p95, pool wait, DB connection, 성공률을 비교한다. 강제 session kill은 업무 commit 상태와 영향 actor를 확인한 승인 절차로만 한다.
runbook에는 첫 query, 안전한 traffic 감축, 중단 기준, 담당 DBA, 사용자 공지, 복구 판정을 둔다. incident 종료는 200 응답 회복뿐 아니라 누락된 audit·outbox와 교대 마감 대사가 끝난 시점이다.