「메모리가 진짜 부족」하면 리눅스 커널의 OOM(Out Of Memory) Killer가 동작 — 메모리 많이 쓰는 프로세스 강제 종료.
서비스 죽음의 흔한 원인.
확인.
dmesg | grep -i "out of memory" 또는 grep -i killed — OOM 발생 기록.
어떤 프로세스가 죽었는지 + 그때의 메모리 상태.
「갑자기 서비스 죽음」 → OOM 의심 첫 단계.
어떤 프로세스가 죽나.
OOM Killer가 「점수」 계산 — 메모리 사용량·우선순위·시작 시각 등.
큰 프로세스가 우선 죽는 편.
/proc/PID/oom_score로 현재 점수, oom_score_adj로 가중치 조정(중요한 프로세스를 -1000으로 보호).
근본 원인 분석.
OOM은 「메모리가 진짜 부족」이라는 신호.
1) 메모리 누수 — 시간 갈수록 느는 프로세스.
2) 갑작스런 부하 — 일시적.
3) 잘못된 설정 — DB cache·JVM heap 너무 큼.
4) 메모리 적은 머신 — 업그레이드 또는 swap 추가.
swap 활용.
메모리 부족 시 swap(디스크의 가상 메모리).
옛날엔 거의 표준, 모던 SSD 시대엔 의견 갈림.
작은 swap(1~4GB)은 OOM 회피·하이버네이션에 유용, 큰 swap에 의존 시 매우 느림.
swapon·swapoff로 관리, /etc/fstab으로 영구.
한 줄 요약
OOM Killer는 메모리 부족 시 큰 프로세스 강제 종료.
dmesg | grep killed로 확인, oom_score_adj로 보호.
근본 원인 — 누수·부하·설정·하드웨어 부족.
swap이 OOM 회피 보조.
더 알아볼 것
- earlyoom — 더 일찍 작동
- cgroups로 프로세스별 제한
- systemd MemoryMax