Как установить настройки убийцы 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;} ?

  • Поиск того, какой конкретный процесс Python был убит убийцей Linux OOM
  • Как предотвратить использование Apache слишком большого количества ОЗУ
  • Проблема с распределением памяти на NOMMU?
  • httpd и mysqld используют память
  • получать сигнал до того, как процесс будет убит убийцей / группами OOM
  • Ошибка «Недостаточно памяти» при копировании больших файлов с помощью pcmanfm
  • Значение 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

    Безопасное хранение необработанных изображений на USB-накопителях

    Исполняемый файл не «действительно существует» после rsync

    Bind9 отказал в запросе

    Наличие дополнительных параметров в трубопроводе или перенаправлении

    Есть ли флаг, соответствующий x / X, но для s с chmod в Linux?

    configure error при попытке установить LASH: «configure: error: компилятор C не может создавать исполняемые файлы»

    Назначение выбора текста переменной в сценарии bash

    Сделать вкладки tmux более похожими на традиционные вкладки

    Возможно ли создать среду Linux без традиционной командной оболочки?

    Нагрузка на устройства initramfs на dist-upgrade

    Как полностью удалить Java 6 и установить Java / JDK 7 в Linux Mint 13

    Репозиторий обновлений Fedora – получение старых обновлений

    Как «grep» строка возвращаемого результата

    Как я могу заставить ядро ​​Ubuntu терпеть неудачу при установке / и перейти в оболочку для восстановления initramfs?

    Добавление цветовой схемы в Vim

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