Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

OOM Killer / Out of Memory Linux / DevOps

Настройка файла подкачки (Swap) в Ubuntu Linux: защита от падения баз данных

Обновлено: 27.08.2026 · Официальная документация ↗

Почему падают базы данных при нехватке RAM

Когда оперативная память (RAM) сервера полностью заполняется, активируется защитный механизм ядра Linux — Out-Of-Memory (OOM) Killer. Чтобы спасти операционную систему от зависания, OOM Killer принудительно уничтожает самый «тяжелый» процесс, которым почти всегда оказывается СУБД (mysqld или postgres).

  • Внезапная остановка сайта с ошибкой «Error establishing a database connection».
  • В логе /var/log/syslog или dmesg появляется запись: Out of memory: Kill process (mysqld) score ....
  • Сервер с небольшим объемом RAM (1–2 ГБ) намертво зависает во время сборки проектов (npm build, composer update).

Создание и настройка Swap-файла размером 2 ГБ / 4 ГБ

  1. Шаг 1. Проверяем наличие активного Swap:
    sudo swapon --show
    free -h

    Если таблица пуста, значит подкачка не настроена.

  2. Шаг 2. Выделяем место под файл подкачки:

    Создадим файл размером 4 ГБ с помощью быстрой утилиты fallocate:

    sudo fallocate -l 4G /swapfile
    # Если fallocate не поддерживается:
    # sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
  3. Шаг 3. Устанавливаем безопасные права доступа:

    Файл Swap содержит дампы оперативной памяти, поэтому доступ к нему должен иметь только root:

    sudo chmod 600 /swapfile
  4. Шаг 4. Инициализируем и подключаем Swap:
    sudo mkswap /swapfile
    sudo swapon /swapfile
  5. Шаг 5. Закрепляем файл в автозагрузке (/etc/fstab):

    Чтобы подкачка работала после перезагрузки сервера, добавьте запись в таблицу монтирования:

    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  6. Шаг 6. Настраиваем баланс использования памяти (vm.swappiness):

    По умолчанию параметр равен 60. Для веб-серверов и баз данных рекомендуется значение 10 (использовать Swap только при критической нехватке памяти):

    sudo sysctl vm.swappiness=10
    echo "vm.swappiness = 10" | sudo tee -a /etc/sysctl.conf

Важное примечание: Swap — это подушка безопасности, предотвращающая падение сервисов, а не замена физической оперативной памяти. Скорость работы диска в сотни раз ниже скорости RAM.

💡 Практика специалистов: Если на сервере без настроенного Swap запускается миграция базы данных или сборка фронтенда, OOM Killer мгновенно «прибивает» MySQL. Наличие даже 2 ГБ Swap-файла полностью решает проблему внезапных ночных падений СУБД.

Частые вопросы (FAQ)

Какой объем Swap рекомендуется создавать?

Для серверов с RAM до 2 ГБ — создавайте Swap равный x2 от объема RAM. Для систем с 4–8 ГБ — Swap равный объему RAM. Для систем свыше 16 ГБ RAM достаточно 4–8 ГБ подкачки.

Можно ли размещать Swap-файл на SSD дисках?

Да. При значении swappiness=10 запись в Swap происходит только в редких пиковых ситуациях, что не оказывает заметного влияния на износ ячеек памяти современных SSD/NVMe.

Как временно отключить и удалить Swap-файл?

Выполните sudo swapoff /swapfile, удалите файл sudo rm /swapfile и сотрите соответствующую строку из файла /etc/fstab.

Что такое параметр vm.vfs_cache_pressure?

Этот параметр определяет агрессивность очистки кэша файловой системы. Значение по умолчанию 100 оптимально для большинства систем, значение 50 помогает дольше удерживать кэш inode в памяти.

Полезные материалы
Рекомендуем