Как отключить Out of memory или oom-killer в CentOS / RHEL |

Как отключить Out of memory или oom-killer в CentOS / RHEL

Мануал

Что такое OOM Killer?

Убийца OOM, включенный по умолчанию, является механизмом самозащиты, использующим ядро Linux при сильном использовании памяти.

Если ядро не может найти память для выделения, когда это необходимо, она помещает страницы пользовательских данных в очередь подкачки.

Если виртуальная память (VM) не может выделять память и не может поменять ее в используемой памяти, киллер может начать убивать текущие процессы из памяти в пользовательском пространстве. он пожертвует одним или несколькими процессами, чтобы освободить память для системы, когда все остальное не удастся.

Если у вас есть строка, как показано ниже в / var / log / messages:

Apr 1 00:01:02 srv01 kernel: Out of Memory: Killed process 2592 (oracle).

это означает, что киллер OOM убил серверный процесс 2592 Oracle.

Отключение OOM-KILLER в CentOS / RHEL

В Red Hat Enterprise Linux 5 и 6 нет возможности полностью отключить OOM-KILLER. См. Следующий раздел для настройки работы OOM-KILLER в RHEL 5 и RHEL 6.

Можно определить, какие процессы будут убиты путем корректировки оценки oom_killer.

В / proc / PID / есть два инструмента с метками oom_adj и oom_score.

Действительные оценки для oom_adj находятся в диапазоне от -16 до +15.

Это значение используется для вычисления «плохого» процесса с использованием алгоритма, который также учитывает, как долго процесс был запущен, среди других факторов.

Чтобы увидеть текущий счет oom_killer, просмотрите oom_score для процесса.

oom_killer сначала уничтожит процессы с наивысшими баллами.

В этом примере настраивается oom_score процесса с помощью PID 12465, чтобы уменьшить вероятность того, что oom_killer убьет его.

# cat /proc/12465/oom_score 
79872
# echo -5 > /proc/12465/oom_adj           
# cat /proc/12465/oom_score
78

Существует также специальное значение -17, которое отключает oom_killer для этого процесса.

В приведенном ниже примере oom_score возвращает значение 0, указывая, что этот процесс не будет убит.

# cat /proc/12465/oom_score
78           
# echo -17 > /proc/12465/oom_adj           
# cat /proc/12465/oom_score
0

Установка «overcommit_memory» на 2, позволяет вам быть точным в отношении избыточной памяти.

Оно указывает, что ядро никогда не будет выполнять адресное пространство, большее, чем пространство подкачки, и фракцию «overcommit_ratio» физической памяти.

Commit = swap + (overcommit_ratio/100) * physical memory

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

Committed_AS в / proc / meminfo показывает текущий объем памяти в системе.

Заключение

Out of Memory (OOM) относится к вычислительному состоянию, в котором выделена вся доступная память, включая пространство подкачки.

Обычно это приведет к panic error и остановке системы.

Хотя OOM нельзя полностью отключить в CentOS / RHEL 5,6; он может быть настроен на то, чтобы определить, какие процессы будут убиты, отрегулировав счет oom_killer.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий