Выбор ответа Senior Память и OOM обновлено
Защитить процесс от OOM killer
Вопрос
Как сделать, чтобы при нехватке памяти OOM killer в последнюю очередь трогал PostgreSQL?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Задать процессу отрицательный oomscoreadj (OOMScoreAdjust=-900). oomscoreadj от -1000 до 1000 сдвигает оценку процесса, -1000 полностью исключает его из выбора.
Варианты ответа
- Запустить PostgreSQL от root, OOM killer root не трогает
- Задать процессу отрицательный
oom_score_adj(OOMScoreAdjust=-900)правильный ответ - Отключить своп, чтобы OOM killer выбирал по размеру RSS
- Выставить
vm.overcommit_memory=1, чтобы OOM killer вообще не срабатывал
Разбор
oom_score_adj от -1000 до 1000 сдвигает оценку процесса, -1000 полностью исключает его из выбора. В systemd это OOMScoreAdjust=. Root-процессы когда-то получали скидку, но сейчас это не защита. Отключение свопа приближает OOM, а overcommit_memory=1 разрешает выделять без проверок и тоже его не предотвращает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.