Out of memory: Killed process — на сервере кончилась память
Когда память на сервере кончается, ядро Linux останавливает самую прожорливую программу, чтобы спасти остальные. Ниже — как это увидеть в журнале и как не допустить снова.
Содержание 7
Как это выглядит
Служба — база данных, PHP, сайт на Node.js — вдруг остановилась, хотя ошибок в её журнале нет. В журнале ядра в это время есть строка:
Out of memory: Killed process 2154 (mysqld) total-vm:1825432kB, anon-rss:812340kB, file-rss:0kB, shmem-rss:0kB, UID:110 pgtables:2124kB oom_score_adj:0Out of memory— память кончилась.Killed process 2154 (mysqld)— номер и имя остановленной программы.anon-rss— сколько памяти она занимала: 812340 kB — около 800 МБ.
Если программа работала в контейнере или службе с ограничением памяти, строка начинается с Memory cgroup out of memory — память кончилась не на всём сервере, а в пределах, выделенных этой программе.
Шаг 1. Проверьте журнал ядра
Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
sudo journalctl -k | grep -i 'killed process'Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. Каждая строка в ответе — одна остановленная программа. Если ответ пустой, ядро ничего не останавливало, и причина падения другая — ищите её в журнале службы (как).
systemd тоже записывает такое событие в журнал службы: строка myapp.service: Failed with result 'oom-kill'. значит, что службу остановили из-за нехватки памяти. В примерах служба называется myapp — подставьте имя своей: nginx, mysql, php8.3-fpm и так далее.
Шаг 2. Посмотрите, сколько памяти и кто её занимает
free -hСтрока Mem — оперативная память, Swap — подкачка. Колонка total — сколько всего, available — сколько ещё свободно для программ. Если в строке Swap нули — подкачки нет.
Пять программ, которые занимают больше всего памяти:
ps aux --sort=-%mem | head -6Колонка %MEM — доля памяти, RSS — сколько килобайт занимает программа.
Шаг 3. Решите, что делать
Включите подкачку
Файл подкачки — место на диске, куда система убирает данные, когда кончается память. Он медленнее памяти, но спасает программы от остановки при коротком всплеске нагрузки. Как его создать, рассказано в инструкции Как настроить VPS: время и подкачка.
Уменьшите аппетиты программ
Базы данных и PHP занимают столько памяти, сколько им разрешено в настройках. На сервере с 1–2 ГБ памяти урежьте их: для MySQL — размер буфера innodb_buffer_pool_size, для PHP-FPM — число процессов pm.max_children. Как настроить базу данных на сервере, рассказано в статье Сервер для базы данных.
Возьмите тариф с большей памятью
Если подкачка включена, настройки урезаны, а память всё равно кончается — серверу не хватает ресурсов. Тариф меняется в панели провайдера. Сохранятся ли данные и нужна ли перезагрузка, уточните в справке своего провайдера.
Как проверить
Перезапустите остановленную службу и проверьте её состояние:
sudo systemctl restart mysql
sudo systemctl status mysqlПодставьте имя своей службы. Через несколько часов работы проверьте журнал ядра ещё раз той же командой из шага 1: новых строк Killed process быть не должно. Чтобы вернуться к вводу команд после systemctl status, нажмите клавишу Q.
Тексты сообщений сверены с исходным кодом ядра Linux 6.8 и systemd 255 — эти версии стоят в Ubuntu 24.04. В других версиях слова могут немного отличаться.
Источники
- Исходный код ядра Linux 6.8: oom_kill.c — текст Out of memory: Killed process.
- Исходный код systemd 255: service.c — названия результатов: exit-code, start-limit-hit, oom-kill.
- Справка free(1) в Ubuntu 24.04 — вывод free -h.
- Справка ps(1) в Ubuntu 24.04 — параметр --sort.
- Справка journalctl(1) в Ubuntu 24.04 — параметры --disk-usage и --vacuum-size.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026