OOM (Out-Of-Memory) в Linux возникает, когда система исчерпывает память (RAM и swap). Для предотвращения зависания ядро запускает OOM Killer, который завершает процессы, освобождая ресурсы.
Как выбирается жертва?
OOM Killer оценивает процессы по «весу» (OOM Score). Это значение зависит от:
🎯 Объема памяти: больше памяти — выше риск.
🎯 Приоритета (OOM Adjust Score): значение от -1000 (процесс защищен) до +1000 (максимальный риск).
🎯 Системной важности: критические процессы (например, демоны) убиваются реже
Настройка OOM Killer
Для настройки используйте /proc/[PID]/oom_score_adj. Например:
echo -1000 > /proc/1234/oom_score_adj
Как избежать OOM?
Мониторинг памяти: используйте htop, free.
Swap: проверьте, что он настроен (swapon -s).
🛠️ Настройка ядра: параметр vm.overcommit_memory:
- 0 (по умолчанию) — баланс между памятью и swap.
- 2 — запрещает выделение памяти без ресурсов.
echo 2 > /proc/sys/vm/overcommit_memory
🛠️ cgroups: ограничьте память для групп процессов:
echo 1G > /sys/fs/cgroup/memory/limit_in_bytes
🛠️ ulimit: задайте ограничения:
ulimit -m [лимит в KB]
OOM Killer защищает систему от сбоев, но важно его настроить, чтобы предотвратить завершение критически важных процессов. Используйте мониторинг, настройку ядра и ограничения ресурсов, чтобы минимизировать риски.
#гайд