Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Out of memory and no killable processes Linux / DevOps

Kernel panic: Out of memory and no killable processes — Настройка OOM Killer в Linux

Обновлено: 18.08.2026  ·  Официальная база знаний

Архитектура ошибки и симптомы сбоя

Сбой «Kernel panic - not syncing: Out of memory and no killable processes...» возникает, когда подсистема управления виртуальной памятью (VMM) полностью исчерпала физическую RAM и область подкачки (Swap), а стандартный механизм OOM Killer не смог найти ни одного пользовательского процесса, допустимого к завершению (либо все оставшиеся процессы защищены через oom_score_adj=-1000, либо система находится в режиме принудительной паники).

Диагностическая таблица параметров сбоя

ПараметрЗначениеИнженерный смысл сбоя
vm.panic_on_oomsysctl: 1 или 2Флаг принудительного вызова Kernel Panic вместо завершения процесса-нарушителя.
vm.overcommit_memorysysctl: 0, 1, 2Политика выделения виртуальной памяти ядром Linux.
oom_score_adj-1000Процесс полностью защищен от завершения Out-Of-Memory киллером.

Пошаговое дерево решений и сценарии траблшутинга

Сценарий 1: Отключение паники при OOM (возврат стандартного OOM Killer)

Проверьте текущие параметры ядра и верните стандартное поведение:

# Проверка текущих параметров:
sysctl vm.panic_on_oom

# Отключение принудительной паники ядра:
sudo sysctl -w vm.panic_on_oom=0

# Фиксация в /etc/sysctl.d/99-memory.conf:
echo "vm.panic_on_oom = 0" | sudo tee -a /etc/sysctl.d/99-memory.conf
sudo sysctl -p /etc/sysctl.d/99-memory.conf

Сценарий 2: Расширение и настройка файла подкачки (Swap)

Если Swap отсутствует или имеет слишком малый объем:

# Создание Swap-файла размером 8GB
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Добавление в /etc/fstab для автозагрузки
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Сценарий 3: Настройка резервирования памяти и лимитов cgroups

  • Для серверов баз данных (PostgreSQL/MySQL) настройте vm.min_free_kbytes, чтобы ядро всегда сохраняло пул памяти для сетевых буферов.
  • Ограничивайте память контейнеров Docker/Kubernetes через memory.max, чтобы утечки в микросервисах не роняли хостовую ОС.
Память утекает в высоконагруженных сервисах?
Инженеры ITSTM выполнят профилирование потребления RAM, настроят лимиты cgroups v2 и оптимизируют СУБД для исключения простоев production-систем.
Практический опыт инженера: При использовании СУБД 1С или PostgreSQL не отключайте Swap полностью (swapoff). Установите vm.swappiness = 1-10 — это защитит ядро от мгновенного Kernel Panic при всплесках потребления.

Частые вопросы (FAQ)

Почему OOM Killer не смог завершить ни один процесс?

Такое происходит, если vm.panic_on_oom установлен в значение 1 (всегда паниковать при OOM), либо если память занята процессами ядра (Slab/Dentry кэш), которые OOM Killer физически не может завершить.

Как защитить критически важный сервис от OOM Killer?

Установите в systemd-юните сервиса директиву OOMScoreAdjust=-1000. Это защитит процесс от убийства, однако убедитесь, что в системе есть другие процессы, которые OOM сможет закрыть в случае исчерпания RAM.