Node.js 컨테이너, 왜 깔끔하게 안 죽을까? (feat. Graceful shutdown)
10
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

이 게시물은 Node.js 컨테이너 환경에서 graceful shutdown이 제대로 동작하지 않는 원인과 해결책을 정리한 글입니다.

핵심 요약

  • PID 1 동작 특성: PID 1은 핸들러 없을 경우 시그널을 무시함, Node.js가 시그널 전파와 좀비 프로세스 정리를 책임지지 않음
  • 해결 방안: dumb-init/tini 같은 경량 init을 PID 1로 사용하여 시그널 전달과 좀비 처리 위임
  • 이벤트 루프 영향: onModuleDestroy 반환만으로 프로세스 종료되지 않음, 남아있는 비동기 작업으로 종료 지연 발생
  • 타임아웃 설계: 애플리케이션 내 타임아웃과 Kubernetes terminationGracePeriodSeconds 간 동기화 필요
  • AbortController 검토: 중단 신호 도입 시 코드 복잡도와 데이터 정합성 우려로 최종적으로 미채택, 실행 중 배치는 완료 보장하고 인프라 정책에 일부 위임

연관 게시글