oom 이슈 해결기

less than 1 minute read

OOM이슈 발견부터 해결까지

발단

CS인입으로 게시물 제목은 보이는데 클릭하여 볼때 게시물이 안보이거나 사진이 깨지는 경우가 있다는 인입이 들어옴 로그 확인시 [WorkerLostError] Worker exited prematurely: signal 9 (SIGKILL). 에러가 확인됨

핸들링 되지 않는 exception등이 아닌 시스템 signall을 통해 워커가 죽음

=> 디버깅을 해보자

처음 : Timeout에러가 나지 않는걸 보니 처리 시간이 오래 걸려서 발생한 것은 아닌것 같다. 서버에서 해당 이슈가 재현되는 케이스로 로컬에서 암만 테스트 해도 재현이 안됨

remote debugging등을 고려를 해보았으나 보류

k8s 클러스터 세팅을 보니 해당 pod에 최대 400mi의 메모리 제한이 있었음 뭔가 이건 메모리 문제 일것 같다 라는 킹리적 갓심이 땋

ide활용하여 디버깅이 아닌 서버 상황을 로컬에서 최대한 재현함 (도커 이미지 사용, 최대 메모리 제한등..)

그러다가 docker 프로세스에 메모리 64mi만 주고 문제가되는 케이스의 잡을 실행 시켰을때에 똑같은 에러 메세지를 뱉으며 재현이 되었다. 아 이건 OOM이구나

파이썬 psutil모듈을 활용하여 시간당 메모리 사용량을 측정해봄 생각보다 의미있는 수치를 보진 못함

기록 : 일자별 OOM에러 개수

  • 2019-08-26 : 81개
  • 2019-08-27 : 151개
  • 2019-08-28 : 98개
  • 2019-08-29 : 98개

어드밴스드 이슈 :

  1. Publisher pretty_content 컴포넌트들을 전체 로딩후 단계별 진행이 아닌 각각의 컴포넌트 로딩시 개별 컴포넌트 별로 후처리 작업 진행
  2. kubernetes 노드 , 리소스 등 모니터링 도구들 활용 해야함