Сценарий:
На голом сервере запущен сервис с утечкой памяти. Что произойдёт, когда память закончится?
Если включён swap
Система начнёт выгружать редко используемые страницы в своп, по сути, использовать диск как "медленную память". Процессы будут жить, но всё станет жутко медленным - диск вместо оперативы и большие задержки.
Посмотреть, включён ли swap:
swapon --show
или просто:
free -h
Если swap выключен
Когда физическая память закончится, ядро запустит OOM Killer (Out Of Memory Killer) - это специальный механизм, который выбирает и убивает процессы, чтобы высвободить память. Умрёт не обязательно твой сервис, система решает сама, кого "пожертвовать", ориентируясь на приоритет oom_score.
Посмотреть, как она видит твоё приложение:
cat /proc/<pid>/oom_score
Как OOM выбирает жертву
Он не смотрит на виртуальную память, а только на реально используемую (resident set size, RSS). Именно физическая память решает, кому жить, а кому нет.
Вывод
Если память утекает Linux не спасёт, он просто решит, кого первым застрелить. Swap продлит агонию, OOM поставит точку.
LinuxCamp | #storage #ram
