Назад | Перейти на главную страницу

Ubuntu как определить, запустился ли убийца OOM

Мы используем Nagios для мониторинга наших серверов. Теперь .. linux использует всю оперативную память, которую мы им даем, поэтому нет никакого способа определить, скоро ли у нас закончится память. Пару раз у нас были сбои сервера из-за чрезмерного использования памяти.

Есть ли способ определить, запускает ли ubuntu (linux) убийцу OOM? Я знаю, что это записано в файлах журнала, но есть ли способ определить, когда он запускается?

/ RJ

Возможно по бревно.

oom-killer оставляет след в syslog и dmesg. Вы можете поместить задание cron или скрипт для вызова через какой-нибудь инструмент мониторинга, который "регистрирует" системный журнал и предупреждает вас, если между запусками есть строки, подобные приведенной ниже.

Feb 24 13:35:29 hostname kernel: [22472693.216224] foobar:23 invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0

dmesg не поддерживает логирование, но dmesg -c очищает буфер dmesg после печати, поэтому сценарий может просто вызвать dmesg -c | grep <string> | wc -l Значение 1 или больше означает, что oom-killer был вызван с момента последнего запуска / загрузки. Но это уничтожит вашу сохраненную информацию dmesg.

Создайте /etc/rsyslog.d/30-oom-killer.conf как показано ниже:

if ($msg contains [
    "oom",
    "kill"
]) then {
    /var/log/oom-killer.log
    stop
}

Добавить /var/log/oom-killer.log к /etc/logrotate.d/rsyslog.

Вы не можете видеть, когда OOM проходит мимо, единственный способ - проверить журналы и надеяться, что он там (иногда он не записывается).

Есть инструменты для проверки использования памяти с Nagios, я лично использую check_mem.pl

Очевидно, он запускается, когда у вас недостаточно свободной виртуальной памяти, и приложение запрашивает область памяти у ядра. Итак, что вам действительно нужно контролировать, так это размер свободной памяти. И средняя загрузка также подлежит мониторингу, потому что она всегда становится высокой, когда не хватает свободной памяти.