Skip to content

Oomkilled

  • Published on
    컨테이너가 Exit Code 137로 죽었는데 애플리케이션 로그에는 아무 예외도 남지 않는 상황을 다룹니다. 137이 128 더하기 9, 즉 SIGKILL이라는 사실만 말해 준다는 점에서 출발해 컨테이너 cgroup 한계에 의한 OOM과 노드 전역 OOM, kubelet 축출을 dmesg 한 줄로 구분하는 법을 정리했습니다. JVM과 Node.js와 파이썬이 컨테이너 한계를 어떻게 오해하는지, 힙을 늘리면 오히려 악화되는 경우가 왜 생기는지, working set과 RSS와 페이지 캐시가 어떻게 다른지, 그리고 메모리 requests와 limits를 같게 두는 선택이 무엇을 주고 무엇을 뺏는지 실제 명령과 출력으로 설명합니다. VPA 권고값으로 근거를 만들고 알림을 거는 재발 방지까지 이어집니다.