OOM Killer(Out of Memory Killer) 는 시스템이 실제 메모리와 가상 메모리 공간(스왑)을 다 사용해 필요한 메모리 공간을
새로 확보 할수 없는 경우 프로세스를 종료시켜 여유 메모리를 확보하는 LINUX 커널의 매커니즘중 하나!!!
일명 out of memory 발생 !!
OOMKILLER 설정 방법
vm.overcommit_memory
0 : heuristic에 따라 overcommit 할 수 있고, 하지 않을 수도 있다.(디폴트) 메모리 요구가 있을 때 여유 공간이 없는 경우 실행중인 프로세스를 강제 종료 메모리를 억지로 확보함.
1 : 항상 overcommit 함. 메모리를 다 사용했는데도 충분한 메모리가있는 것처럼 처리 됨. 그 외에는 0과 같음.
2 : overcommit하지 않음. 메모리가 부족할 경우 메모리 확보시 에러 발생시킴. [Swap size] + ([RAM size] * vm.overcommit_ratio/100).
vm.overcommit_ratio
사용 가능한 메모리의 백분율로 정의. overcommit_ratio의 디폴트는 50.
메모리 정보 확인
1G사용중
상한가는 500메가 사용중인 메모리는 70메가 확인
1. vm.overcommit_memory = 0 or 1 일 경우 현재 환경에서 메모리 확보 테스트
메모리 부하 소스 C언어로 작성
c언어로 메모리 부하 소스 저장하 gcc를 이용해 컴파일후 ./a.out 실행
out of memory 발생 확인
2. vm.overcommit_memory = 2, vm.overcommit_ratio = 99 일 경우 테스트
overcommit_ratio 를 기본 50에서 99로 올리고 overcommit_memory 설정을 2로 변경
1G 메모리를 다 사용하지 않던 서버가 전부 사용 상향 리밋에 표시 된다
아까와 마찬가지로 C언어 소스 실행
이번에는 서버가 죽지 않고 제어가 프로그램으로 넘어거 예외 처리를 할 수 있는 구조가 된다
마지막으로 리부팅시에도 적용이 되도록 /etc/sysctl.conf 에도 등록 해 준다
[polldaddy rating=”7739789″]