Как вы можете получить больше информации о процессах, когда Linux не хватает памяти?
-
02-07-2019 - |
Вопрос
Недавно у меня возникла проблема с тем, что oom-killer через некоторое время начал убивать процессы.Я видел, что память израсходована, но к тому времени, как я добрался до сервера, уже не было ясно, что ее потребляет.Есть ли хорошее неочевидное место, где можно получить больше информации об oom-killer?Например.подробная информация о процессах на момент активации, подробная информация об убитых процессах и причинах выбора?
Я ищу конкретное место, где можно найти эту информацию, конкретный инструмент для ее сбора или какую-то конфигурацию для улучшения отчетов oom-killer.Я не ищу общую информацию о oom-killer./var/messages по умолчанию будет содержать только подробный отчет о свободной/выделенной памяти, но не о конкретных процессах, которым она была выделена.
Решение
Вы можете проверить файл журнала сообщений, чтобы узнать, какой процесс был завершен, и некоторую соответствующую информацию.Что касается причин:
...Идеальным кандидатом на ликвидацию является недавно запущенный непривилегированный процесс, который вместе со своими дочерними процессами использует много памяти, был оптимизирован и не выполняет необработанный ввод-вывод.Что-то вроде параллельной сборки ядра с помощью nohup (это неплохой выбор, поскольку все результаты сохраняются на диск и очень мало работы теряется при завершении команды make).
От здесь.
Вы можете определить некоторые процессы, чтобы они были невосприимчивы к убийце, настроить параметр подкачки, если он у вас слишком низкий (что делает триггер убийцы счастливым) и проверить перечисленные вещи. здесь
Другие советы
Обычно вы должны получить сообщение в /var/log/messages с довольно большим количеством подробностей, касающихся процесса, который был уничтожен oom-killer.
Это не точный ответ на ваш вопрос, но malloc(3)
На странице руководства Linux есть информация о том, как отключить перераспределение памяти.
echo 2 > /proc/sys/vm/overcommit_memory