Настройка swap на VPS. Что делать, если мало оперативки
Зачем нужен swap
Swap это область на диске, которая используется как дополнительная "оперативная память". Когда RAM заканчивается, система переносит неактивные данные в swap, чтобы не убивать процессы.
На VPS с 1-2 ГБ RAM swap практически обязателен. Без него сервер может просто убить ваше приложение, если памяти не хватит.
Сколько swap нужно
| RAM сервера | Рекомендуемый swap |
|---|---|
| 512 МБ | 1 ГБ |
| 1 ГБ | 1-2 ГБ |
| 2 ГБ | 2 ГБ |
| 4 ГБ | 2 ГБ |
| 8+ ГБ | 2 ГБ (или не нужен) |
Проверка текущего swap
free -h
Если в строке Swap стоят нули, значит swap не настроен.
Ещё можно проверить так:
swapon --show
Создание swap-файла
Шаг 1: Создайте файл нужного размера
Для swap на 2 ГБ:
fallocate -l 2G /swapfile
Если fallocate не работает:
dd if=/dev/zero of=/swapfile bs=1M count=2048
Шаг 2: Установите права доступа
chmod 600 /swapfile
Шаг 3: Пометьте файл как swap
mkswap /swapfile
Шаг 4: Включите swap
swapon /swapfile
Шаг 5: Проверьте
free -h
Теперь в строке Swap должен появиться ваш объём.
Автоматическое включение при перезагрузке
Добавьте строку в /etc/fstab:
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Без этого шага swap пропадёт после перезагрузки сервера.
Настройка swappiness
Swappiness определяет, насколько активно система использует swap. Значение от 0 до 100:
- 0 система использует swap только в крайнем случае
- 10 хороший вариант для VPS (рекомендуется)
- 60 значение по умолчанию (слишком агрессивно для сервера)
- 100 система постоянно сбрасывает данные в swap
Проверить текущее значение
cat /proc/sys/vm/swappiness
Изменить на 10
sysctl vm.swappiness=10
Сохранить на постоянку
echo 'vm.swappiness=10' >> /etc/sysctl.conf
Как увеличить swap
Если текущего swap не хватает:
# Выключить старый swap
swapoff /swapfile
# Создать файл побольше
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
Как удалить swap
swapoff /swapfile
rm /swapfile
И удалите строку с /swapfile из /etc/fstab.
Swap на SSD vs HDD
На SSD swap работает значительно быстрее, но частая запись в swap сокращает ресурс диска. На серверах Datagio используются SSD, поэтому swap будет работать быстро, но не стоит полагаться на него как на замену RAM. Если swap постоянно загружен, лучше перейти на тариф с большим объёмом оперативной памяти.
Swap это не замена RAM, а страховка. Если ваш сервер постоянно использует swap, пора апгрейдить тариф.