Docker --oom-kill-disable, --oom-score-adj 에 대해 알아보자
Devops/AWS

Docker --oom-kill-disable, --oom-score-adj 에 대해 알아보자

뉴비뉴 2024. 1. 27.

 

 오늘은 일을 하다가 처음보는 옵션이기도 해서 궁금해서 가져왔습니다.

도커의 경우 Env, Port, Volume 보통 이정도만 설정해도 큰 불편함 없이 사용할 수 있습니다.

--oom-kill-disable, --oom-score-adj 는 어떤 상황에 사용해야 되는지 알아보겠습니다.

 

OOM Killer(Out of Memory Killer)

 일부 컨테이너에 할당된 가용 메모리의 한계가 초과되어 시스템이 해당 컨테이너를 강제로 종료시키는 상황

도커에서는 파라미터로 oom-killer에 의한 프로세스 종료를 예방할 수 있습니다.

옵션 설명
--oom-kill-disable default: false, Disable(비활성화) OOM Killer
--oom-score-adj default: 0, Tune hosts' OOM preferences(-1000 to 1000)

 

--oom-kill-disable 의 값을 true로 하면, host의 OOM Killer를 disable(비활성화) 할 수 있다.

  • 즉 메모리, 디스크 공간이 넘어간다 해도 host 에서 종료할 수 없다는 말 입니다.
  • 이 옵션은 컨테이너가 메모리 부족 상황에서도 OOM Killer에 의해 강제로 종료되지 않도록 막아줍니다.
  • OOM Killer는 시스템의 메모리가 고갈되었을 때 가장 메모리를 많이 사용하는 프로세스를 종료시키는 커널 기능입니다.
  • 이 옵션을 사용하면 컨테이너가 강제로 종료되는 것을 피할 수 있습니다.

--oom-score-adj 의 값을 설정하면 사용자가 oom-score-adj 값을 우선 시 하도록 설정 가능하다.

  • --oom-score-adj=-1000 으로 설정하면 --oom-kill-disable=true 와 같은 효과를 준다.
  • 이 옵션은 컨테이너의 OOM 점수를 매우 낮추어 OOM Killer가 이 컨테이너를 선택하지 않도록 합니다.
  • 이 옵션을 사용하면 해당 컨테이너가 메모리 부족 상황에서 다른 프로세스보다 우선적으로 살아 남을 수 있습니다.

Swap 영역

만약 메모리가 많이 사용되는 경우면 Swap 영역을 설정하곤 합니다.

"Swap 영역이란 간단히 말해 디스크 공간의 일부(3G)를 메모리 공간으로 사용한다" 입니다.

보통 비상 시에 대비해서 만들어 놓습니다.

 

참조

https://blog.2dal.com/2017/03/27/docker-and-oom-killer/

 

Docker and OOM(Out Of Memory) Killer | asbubam's blog on 2dal.com

이야기는 이렇게 시작된다. Docker를 쓰다가 Container위에서 돌던 Java 프로세스가 OOM(Out Of Memory) Error를 내고 죽은 로그를 발견! Docker Container의 OOM 문제에 대해서 리서치를 시작! 언제나 그렇듯 나는

blog.2dal.com

 

 도커의 OOM(Out of Memory) Killer 에 대해서 알아봤습니다.

현업에서는 OOM Killer, Swap 영역, 도커가 종료되었을 때 Noti 등을 설정하는 것 같습니다.

 

오타나 잘못 설명된 내용이 있다면 댓글로 알려주시면 수정하겠습니다.

감사합니다!

댓글

💲 추천 글