На главную
- Инструкции для UNIX-систем
- Обзор
- Подключение к серверу по SSH
- Подключение к серверу по SFTP
- Авторизация по SSH-ключу
- Смена или сброс пароля root
- Смена пароля root для MySQL
- Добавление пользователей
- Управление правами доступа
- Защита SSH от подбора пароля. Fail2ban
- Создание дампа базы и восстановление данных
- Установка LAMP на Ubuntu
- Установка phpMyAdmin на Ubuntu с LAMP
- Установка SSL-сертификата на Nginx
- Установка модулей PHP (CentOS)
- Установка модулей PHP (Debian / Ubuntu)
- Настройка параметров PHP (CentOS)
- Настройка параметров PHP (Debian / Ubuntu)
- Настройка перенаправлений
- Настройка перенаправлений (Nginx)
- Настройка FTP в Ubuntu 20.04
- Оптимизация MySQL с помощью MySQLTuner
- Сканирование с помощью ClamAV
- Управление службами в systemd
- Логирование в systemd
- Аудит системных событий
- Добавление дополнительного IP
- Настройка статического IP
- Добавление и удаление диска
- Изменение размера диска
- Монтирование резервных копий
- Создание swap, изменение его размера
- Установка и удаление программ. Менеджеры пакетов
- Установка графической оболочки XFCE на Ubuntu
- Настройка iptables
- Настройка OpenVPN
- Установка произвольной ОС на сервер
- Удаленный доступ к MySQL
- Установка QEMU-агента
- Установка Zabbix-агента
- Установка и работа с PostgreSQL
- Установка почтового сервера iRedMail
- Настройка почтового сервера iRedMail
- Установка SSL на сервер с Keitaro
- Запуск Wordpress на сервере c Ubuntu
- Запуск бота в фоновом режиме
- Установка сертификатов Минцифры
- Подготовка образа для создания облачного сервера
- Создание и развертывание образа с помощью утилиты dd
- Установка Minecraft на CentOS 7
- Запуск сервера Minecraft
- Запуск сервера с CS 1.6 и EngineGP
- Запуск сервера RageMP
- Настройка Outline VPN
- Диагностика и решение проблем
- Обзор
- Базовая диагностика при проблемах в работе сайта
- Проблемы с базой данных
- Анализ дискового пространства: ncdu, du
- Данные о дисках: df, lsblk, parted, fdisk
- Контроль нагрузки и процессов: top, htop, atop
- Завершение процессов OOM Killer
- Переполнение inodes
- Проверка файловой системы
- Ускорение работы сайта: перенос MySQL в tmpfs
- Устранение ошибки «Could not get lock /var/lib/dpkg/lock»
- Другие возможные проблемы
- Инструкции для Windows
- Панели управления
Завершение процессов OOM Killer
OOM Killer — механизм ядра Linux, который при исчерпании доступной памяти принудительно завершает отдельные процессы на сервере для освобождения RAM. Освободившаяся память передается ядру ОС, а после перенаправляется тому процессу, которому ее было недостаточно.
OOM Killer использует определенный набор правил для выбора процесса, который нужно «убить». В целом, в первую очередь будут завершены недавно запущенные пользовательские процессы, которые требуют большого объема памяти и/или имеют множество дочерних процессов; в последнюю очередь будут завершаться системные процессы пользователя root, запущенные значительное время назад.
В связи с тем, что OOM killer «убивает» процессы с помощью SIGKILL
, что не дает возможности корректного завершения процессов, сохранения данных и пр., частое срабатывание этого механизма может приводить к серьезным последствиям в работе системе.
Что делать при срабатывании OOM killer
- Если вы замечаете такое поведение только при больших нагрузках, например, при проведении работ по оптимизации сервера и др., можно временно отключить антивирусное ПО. Это позволит освободить до нескольких сотен мегабайт оперативной памяти, чтобы необходимые процессы были успешно выполнены. Разумеется, это снижает безопасность вашего сервера, поэтому рекомендуется использовать этот вариант только в качестве временной меры.
- Если OOM killer срабатывает регулярно, необходимо проанализировать работу сервера, баз данных, сайтов и провести оптимизацию, чтобы устранить причину проблемы.
- Если сервер оптимизирован, но памяти постоянно не хватает, увеличьте ее объем или перейдите на тариф с большим количеством RAM (см. Тариф и конфигурация).
- Также есть возможность установить приоритет определенному процессу, чтобы запретить OOM killer его завершать. Значение приоритета хранится в файле
/proc/$PID/oom_adj
, который создается при запуске каждого процесса. Для установки приоритета необходимо узнать PID конкретного процесса, после чего воспользоваться командой:
echo -17 > /proc/PID_процесса/oom_adj
Можно использовать название процесса; на примере sshd:
pgrep -f "/usr/sbin/sshd" | while read PID; do echo -17 > /proc/$PID/oom_adj; done
Устанавливаемый приоритет в данном случае — -17. Более безопасный вариант — использовать приоритет -15. В этом случае процесс будет одним из последних, которые OOM killer завершит, но при этом отсутствует полный запрет на завершение, который в критических ситуациях может привести к kernel panic.