OOM Killer выбирает процесс для завершения при исчерпании доступной памяти, в том числе в пределах cgroup. На выбор влияют потребление памяти и oom_score_adj, а не язык приложения.
Что такое OOM Killer в ядре Linux? По каким критериям, включая oom_score, операционная система выбирает Python-бэкенд для принудительного уничтожения при нехватке оперативной памяти на сервере и как предотвратить такое падение?
OOM Killer выбирает процесс для завершения при исчерпании доступной памяти, в том числе в пределах cgroup. На выбор влияют потребление памяти и oom_score_adj, а не язык приложения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
OOM Killer выбирает процесс для завершения при исчерпании доступной памяти, в том числе в пределах cgroup. На выбор влияют потребление памяти и oom_score_adj, а не язык приложения.
Оценку можно смотреть в /proc/<pid>/oom_score, настройку — в oom_score_adj. Область выбора зависит от того, где возник дефицит: весь хост или ограниченная группа. Python-бэкенд не имеет специального иммунитета.
Проверяйте kernel log, метрики контейнера, RSS и рост очередей/кешей. Ограничивайте параллелизм, обрабатывайте данные потоково и устраняйте утечки. Снижение score не добавляет памяти, а переносит риск на соседние процессы. Одного рестарта недостаточно: нужны разумные лимиты и запас ресурсов.
Источник: cdn.kernel.org.