리눅스 OOM-killer란? 메모리 부족 현상

리눅스는 시스템이 가용 가능한 메모리의 임계치에 도달하면 자동으로 메모리를 가장 많이 차지하고 있는 프로세스를 강제 종료시킵니다. 이런 역할을 하는 리눅스 커널 기능과 강제 종료할 프로세스 선택 기준에 대해 알아보겠습니다.

OOM Killer란?

OOM Killer는 시스템에서 사용 가능한 여유 메모리가 임계치 아래로 떨어질 때 자동으로 프로세스를 죽이는 리눅스 커널 기능입니다. Out Of Memory Killer라는 이름 그대로의 역할을 수행합니다.

 

OOM 킬러가 필요한 이유는 리소스 과다 사용, 메모리 누수 같은 문제가 발생했을 때 해당 프로세스를 죽임으로써 메모리를 확보하고 시스템 충돌을 방지하기 위함입니다. 쉽게 말해 컴퓨터가 죽기 전에 프로세스를 죽인다고 이해하시면 될 거 같습니다.

OOM 킬러가 죽이는 프로세스 기준

메모리 사용량이 임계치를 넘어가면 OOM 킬러는 프로세스 목록을 스캔하고 OOM 점수에 따라 kill할 프로세스를 선택합니다. 점수는 프로세스의 메모리 사용량, 하위 프로세스 수, 프로세스 우선순위 등 요소로 결정됩니다. OOM 점수가 가장 높은 프로세스가 일반적으로 첫 번째 강제 종료 타깃이 됩니다.

 

OOM 킬러가 프로세스를 죽일 땐 아무런 경고 없이 강제 종료됩니다. 그렇기 때문에 애플리케이션 입장에선 데이터 손실 위험이 있고 서비스에 큰 타격을 받습니다.

OOM 킬러 트리거 방지 방법

뻔한 이야기지만 OOM 킬러가 작동하지 않으려면 평소에 메모리가 부족하지 않도록 관리가 필요합니다. 구동하는 애플리케이션 사양에 걸맞는 시스템 스펙을 갖춰야 하고, 부족하다고 판단되면 메모리를 추가하거나 애플리케이션을 최적화시켜야 합니다.

반응형

댓글

Designed by JB FACTORY