Как установить настройки убийцы OOM для демонов навсегда?

Запустив некоторые серверы Linux с одним или несколькими жизненно важными системными службами, я хотел бы настроить убийцу OOM для тех демонизированных процессов, если произойдет что-то нечетное. Например, сегодня на каком-то сервере Ubuntu, на котором запущен MySQL, был убит демон MySQL, потому что тонны процессов apt-checker потребляли всю память, и ядро ​​подумало, что было бы неплохо убить MySQL.

Я знаю, что могу настроить счет, используя файл /proc/$(pidof mysqld)/oom_score_adj чтобы дать ядру некоторую подсказку. Я не хочу, чтобы MySQL был убит, но это не /proc/$(pidof mysqld)/oom_score_adj службы. Должен ли я редактировать скрипты init / upstart из пакета, чтобы включить эти настройки? Я не думаю, что это очень элегантное решение, так как я бы вносил корректировки в файлы, принадлежащие к пакету. Можно ли подключиться к сценариям upstart / init вообще и условно настроить его? Или вы предложите запустить неопределенный скрипт, например while true{ adjust_oom(); sleep 60;} while true{ adjust_oom(); sleep 60;} ?

  • Использование памяти неумолимо ползет вверх
  • получать сигнал до того, как процесс будет убит убийцей / группами OOM
  • Поиск того, какой конкретный процесс Python был убит убийцей Linux OOM
  • AIX - использовать встроенные функции ksh для освобождения памяти, когда fork невозможно
  • Перезагрузка Linux из памяти
  • Как заставить убийцу OOM регистрироваться в / var / log / messages, когда он убивает какой-либо процесс?
  • Почему OOM-Killer не может просто убить процесс, который требует слишком многого?
  • Система не может выделить память, даже если память доступна
  • 2 Solutions collect form web for “Как установить настройки убийцы OOM для демонов навсегда?”

    Это возможно в Ubuntu с использованием Upstart и опции настройки oom score .

    oom score

    У Linux есть средство «без памяти». […]

    Обычно убийца OOM рассматривает все процессы одинаково, эта строфа советует ядру рассматривать эту работу по-разному.

    Значение «корректировки», предоставляемое этой строфе, может быть целочисленным значением от -999 (очень маловероятно, чтобы убить убийца OOM) до 1000 (очень вероятно, что он будет убит убийцей OOM). […]

    Пример:

     # this application is a "resource hog" oom score 1000 expect daemon respawn exec /usr/bin/leaky-app 

    Вы можете взломать его в сам MySQL (например, sshd OpenSSH делает это), но это слишком хардкорно и очень грязно (проблемы с обновлениями и т. Д.),

    Вы можете сделать это в оболочке или в скрипте инициализации – оценка должна быть унаследована (и в оболочке вы, вероятно, захотите сделать exec mysqld "$@" любом случае).

    Использование cgroups – это даст вам немного большую гибкость, и его можно сделать постоянным в том смысле, что соответствующие настройки могут применяться автоматически при перезапуске службы. См. Например, управление приоритетом приложений с использованием групп для получения дополнительной информации. Чтобы добиться автоматизма, который вы ищете, вы, вероятно, захотите взглянуть на libcgroup , в котором содержится демон, который может обрабатывать изменяющиеся группы запущенного процесса «на лету» в соответствии с набором правил или просто использовать оболочку cgexec (из того же пакета).

    Interesting Posts

    Как отображать сообщения printk, отфильтрованные по уровню по мере их поступления?

    Как я могу получить shaX с кодировкой base64 в cli?

    Невозможно выйти из меню KDE OpenSuSE

    Почему мое графическое устройство R не освежает и получает так медленно через VNC?

    Как загрузить на сервер unix?

    При компиляции я могу использовать файл для параметров ./configure?

    Элементы управления Spotify (следующий, предыдущий и т. Д.) Через контекстное меню в фаворитах gnome

    Systemd и управление настройками сети

    Как отобразить список доступных команд приложения в терминале

    Код оболочки, чтобы проверить, установлено ли устройство или файл с пробелами в пути.

    Вложенные папки Untar с содержимым начальной папки в linux

    Переслать все порты VNC с помощью SSH

    Порядок сортировки для заказа этого списка в определенном порядке

    скачать программное обеспечение для последующей установки

    Организовать записи в виде таблицы (csv) с помощью awk

    Linux и Unix - лучшая ОС в мире.