Как управлять OOM Killer в Linux, чтобы база данных никогда не убивалась? Какой параметр за это отвечает?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

В 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее