Настройка файла подкачки (Swap) в Ubuntu Linux: защита от падения баз данных
Почему падают базы данных при нехватке 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. Проверяем наличие активного Swap:
sudo swapon --show free -hЕсли таблица пуста, значит подкачка не настроена.
- Шаг 2. Выделяем место под файл подкачки:
Создадим файл размером 4 ГБ с помощью быстрой утилиты
fallocate:sudo fallocate -l 4G /swapfile # Если fallocate не поддерживается: # sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 - Шаг 3. Устанавливаем безопасные права доступа:
Файл Swap содержит дампы оперативной памяти, поэтому доступ к нему должен иметь только root:
sudo chmod 600 /swapfile - Шаг 4. Инициализируем и подключаем Swap:
sudo mkswap /swapfile sudo swapon /swapfile - Шаг 5. Закрепляем файл в автозагрузке (/etc/fstab):
Чтобы подкачка работала после перезагрузки сервера, добавьте запись в таблицу монтирования:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab - Шаг 6. Настраиваем баланс использования памяти (vm.swappiness):
По умолчанию параметр равен 60. Для веб-серверов и баз данных рекомендуется значение
10(использовать Swap только при критической нехватке памяти):sudo sysctl vm.swappiness=10 echo "vm.swappiness = 10" | sudo tee -a /etc/sysctl.conf
Важное примечание: Swap — это подушка безопасности, предотвращающая падение сервисов, а не замена физической оперативной памяти. Скорость работы диска в сотни раз ниже скорости RAM.
Частые вопросы (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 в памяти.