Главная / Справочник ошибок / Сервер
Ядро Linux убило процесс из-за нехватки памяти
Out of memory: Killed process
Сообщение ядра «Out of memory: Killed process» на сервере Directum RX: память кончилась, OOM killer завершил самый прожорливый процесс. Как понять, кого убили и почему, и как настроить память.
Что это значит
На сервере кончилась оперативная память, и ядро завершило процесс, который занимал её больше всех. Часто это PostgreSQL, Elasticsearch или сервис RX на .NET. Убитая база означает перезапуск и обрыв всех соединений, убитый сервис означает ошибки у пользователей до его перезапуска.
Про контейнеры, которые упёрлись в собственный лимит, есть отдельная статья. Здесь речь о памяти всего сервера.
Как проверить
- Кого и когда убили:
journalctl -k | grep -iE "out of memory|oom-kill"
- Кто сколько ест сейчас:
ps aux --sort=-rss | head - Настройки памяти основных потребителей:
shared_buffersиwork_memв PostgreSQL, размер кучи Elasticsearch (-Xmx), число экземпляров сервисов RX на сервере.
Что сделать
- Свести бюджет памяти: сумма того, что могут занять база, поиск, сервисы и кэш файловой системы, должна помещаться в память сервера с запасом. Подсказка для PostgreSQL в калькуляторе настроек.
- Elasticsearch: куча не больше половины памяти сервера.
- Не держать базу и тяжёлые сервисы на одной машине без жёстких лимитов.
- Поставить алерт на остаток памяти и на сам факт срабатывания OOM killer.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать