Ошибки

Out of memory: Killed process — на сервере кончилась память

Когда память на сервере кончается, ядро Linux останавливает самую прожорливую программу, чтобы спасти остальные. Ниже — как это увидеть в журнале и как не допустить снова.

Обновлено 10.10.2026≈ 4 мин чтения
Содержание 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:0
  • Out 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. В других версиях слова могут немного отличаться.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026