Sobes.tech
Senior
45

Wie man den OOM Killer in Linux verwaltet, damit die Datenbank niemals beendet wird? Welcher Parameter ist dafür verantwortlich?

Unternehmen wurden gefragt
VKVK

Antwort von AI

sobes.tech KI

В Linux управление поведением OOM Killer (Out-Of-Memory Killer) для конкретного процесса, например базы данных, осуществляется через параметр oom_score_adj. Этот параметр принимает значения от -1000 до 1000, где -1000 означает полное исключение процесса из списка кандидатов на убийство при нехватке памяти.

Чтобы база данных никогда не убивалась OOM Killer, нужно установить для её процесса oom_score_adj в -1000. Это можно сделать, например, так:

# Найти PID процесса базы данных
pid=$(pidof postgres)
# Установить oom_score_adj
echo -1000 | sudo tee /proc/$pid/oom_score_adj

Если база запускается через systemd, можно добавить в unit-файл:

OOMScoreAdjust=-1000

Это гарантирует, что при нехватке памяти OOM Killer не будет убивать процесс базы данных.

Также стоит контролировать общее потребление памяти и настроить swap, чтобы минимизировать срабатывание OOM Killer.