피드로 돌아가기
Dev.toInfrastructure
원문 읽기
HTTP fetch를 TCP connect로 대체하여 False-Positive 알람 제거
Two False-Positive Fixes, Same Root Cause
AI 요약
Context
단일 VPS 내 25개 컨테이너가 자원을 공유하는 환경에서 특정 스택의 부하 증가가 전체 시스템에 영향을 주는 구조적 제약 존재. Application Layer의 HTTP-based Healthcheck가 고부하 상황에서 Timeout(5s)을 초과하며 정상 프로세스를 Unhealthy로 오판하는 병목 지점 발생.
Technical Solution
- Application Layer의 HTTP fetch 로직을 Transport Layer의 TCP connect 방식으로 변경하여 커널 수준의 SYN/ACK 교환만으로 생존 여부 확인
- HTTP 파싱 및 JSON 처리 등 Event-loop 부하를 제거하여 시스템 고부하 상태에서도 빠른 응답성 확보
- Healthcheck Interval을 10s에서 30s로 확장하여 불필요한 상태 전이 및 콜백 실행 횟수 감소
- Retry 횟수를 5회에서 3회로 조정하고 Start Period 15s를 설정하여 부팅 단계의 일시적 실패 방지
- Netdata 모니터링에 120초 Hold-down 기간을 설정하여 일시적인 Spike로 인한 알람 노이즈 차단
실천 포인트
1. Healthcheck 설계 시 Application Logic(HTTP/JSON) 의존성을 제거하고 최소 단위의 연결성(TCP/Socket) 검증인지 확인
2. 모니터링 식의 전제 조건(Load, Cache, External Service) 중 가변적인 요소가 포함되어 있는지 분석
3. 일시적 Peak에 의한 알람 방지를 위해 Hold-down 기간 및 적절한 Start Period 설정 적용