--- title: Runbook — 5xx Internal error spike category: INTERNAL error_codes: [INTERNAL_ERROR, INTERNAL_AUTH_MISCONFIGURATION, JVM_OOM] severity: P1 owner: oncall last_updated: 2026-05-22 status: stub --- # Runbook: 5xx Internal error spike ## 1. Trigger 이 runbook은 다음 alert에서 발동됩니다. - alert name: `http_5xx_error_rate_critical` - alert payload 필수 field: `operation`, `error.code`, `error.category`, `request_id`, `traceId`, `runbook_link` - 임계: 5xx error rate > 5% 5분 지속 OR > 10% 1분 ## 2. First Response (5분 이내) ### Step 1 — 확인 1. 가장 최근 deploy 시각 확인 (CI/CD dashboard, artifact registry digest) 2. JVM metric 확인: heap usage, GC pause, CPU, thread count 3. log에서 실패 request 1건 추출 → `request_id`, `traceId` 확보 4. error.code 분포 확인: `INTERNAL_ERROR` vs `JVM_OOM` vs `INTERNAL_AUTH_MISCONFIGURATION` ### Step 2 — 임시 격리 - 직전 deploy가 의심되면 즉시 rollback (artifact registry에서 직전 image digest pin) - OOM 패턴이면 affected pod evict → ASG/HPA로 replacement 유도 - LB에서 unhealthy pod 격리 (readiness probe failure 유도) ## 3. Diagnosis - log query: `{service="app"} | http.status>=500 | stats count by error.code` - metric panel: `jvm_memory_used_bytes{area="heap"}`, `jvm_gc_pause_seconds`, `process_cpu_seconds_total`, `http_server_requests_seconds_count{status=~"5.."}` - trace: 실패 request의 `traceId`로 span chain 확인 → stack trace에서 root exception 추출 - heap dump 위치: `/var/tmp/heap/heapdump-.hprof` (JVM ergonomics: `-XX:MaxRAMPercentage=75 -XX:+HeapDumpOnOutOfMemoryError`) - 가능한 원인: - 직전 deploy의 회귀 버그 → rollback - JVM OOM (메모리 leak 또는 부하 증가) → heap dump 분석 - 외부 의존성 설정 오류 (`INTERNAL_AUTH_MISCONFIGURATION`) → config secret 확인 - thread starvation (pool 고갈) → thread dump (`jstack `) ## 4. Mitigation - 단기: 직전 deploy rollback, OOM pod replacement, traffic 일시 감소(scale-out 또는 rate-limit 강화) - config 오류면 secret/configmap rollback - 장기: heap dump 기반 leak 수정, capacity planning 재검토 ## 5. Escalation - 다음 on-call로 page: 10분 내 회복 안 되면 incident commander 호출, severity 1 incident 선언 - 데이터 손상 의심되면 DBA team page ## 6. Recovery / Verification - 회복 확인 metric: 5xx rate < 0.5% 5분 지속, JVM heap usage < 70%, GC pause p99 < 500ms - post-incident: - rollback 원인 RCA 작성 (배포 게이트 강화 필요 여부) - heap dump 분석 결과 공유 - JVM ergonomics(`-XX:MaxRAMPercentage`) 재검토 - rollback 자동화 절차 점검 ## 7. Related - error-codes.yaml rows: `INTERNAL_ERROR`, `INTERNAL_AUTH_MISCONFIGURATION`, `JVM_OOM` - metrics.yaml: `jvm_memory_used_bytes`, `jvm_gc_pause_seconds`, `http_server_requests_seconds_count` - 관련 branch: [[feature-operational-error-observability-foundation]], [[feature-container-runtime-contract]] --- > **Stub 상태 안내**: 이 runbook은 skeleton 단계의 stub. 도메인 도입 시 실제 deploy 파이프라인·heap dump 보관 경로·rollback 자동화 명령으로 보강 필요.