−25%

на годовую оплату Windows, до 31.10. К тарифам

EQVPS

Как добавить своп-файл на Linux VPS

Создайте своп-файл пятью командами, сделайте его постоянным и настройте swappiness — плюс сколько свопа нужно и когда настоящее решение — больше RAM.

Маленьким серверам не хватает памяти в самый неподходящий момент: apt upgrade, сборка Docker, ночной бэкап. Без свопа OOM killer ядра выбирает процесс и завершает его — часто вашу базу данных. Своп-файл — дешёвый ремень безопасности, который даёт этим пикам куда деться. Нужно пять команд.

1. Проверьте, что есть сейчас

swapon --show
free -h

Если swapon --show ничего не выводит, свопа пока нет.

2. Создайте своп-файл

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

chmod 600 важен: в свопе могут оказаться обрывки чего угодно из памяти, включая секреты, поэтому читать его может только root. Если fallocate ругается «operation not supported», используйте dd:

dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

3. Сделайте его постоянным

Без этого шага своп пропадёт после перезагрузки:

echo '/swapfile none swap sw 0 0' >> /etc/fstab

4. Настройте swappiness

Попросите ядро предпочитать RAM и использовать своп в основном при нехватке:

echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl --system

5. Проверьте

swapon --show
free -h

Должно появиться устройство свопа на 2 ГБ, а cat /proc/sys/vm/swappiness должен вывести 10.

Какого размера делать?

Не делайте своп «вдвое больше RAM». На сервере своп нужен, чтобы поглощать короткие пики, а не запускать задачи, которые не помещаются в память.

Когда своп — не решение

Понаблюдайте несколько дней:

vmstat 5

Колонки si и so показывают страницы, загруженные из свопа и выгруженные в него за секунду. Изредка — нормально. Постоянные ненулевые значения значат, что памяти не хватает и всё ждёт диск. Тогда решение — больше RAM: см. сколько RAM нужно VPS. В EQVPS можно перейти на тариф побольше без переустановки; данные сохранятся.

Связанное

Частые вопросы

Сколько свопа добавлять?

На серверах с 1–2 ГБ RAM своп-файл на 1–2 ГБ — хороший стандарт. На серверах побольше 1–2 ГБ тоже достаточно как страховки: совет делать своп «вдвое больше RAM» — из времён машин на 256 МБ.

Своп ускорит сервер?

Нет. Своп лишь не даёт упасть, когда память ненадолго кончается: обновление пакетов, сборка Docker, бэкап. Страницы памяти на диске в тысячи раз медленнее RAM. Если сервер свопится постоянно, ему нужно больше памяти.

Что делает swappiness?

Определяет, насколько охотно ядро выгружает простаивающую память в своп. Значение по умолчанию 60 свопит довольно рано; 10 говорит ядру держать всё в RAM и прибегать к свопу в основном при реальной нехватке — большинству серверов это подходит.

Почему своп-файл, а не раздел?

Файл можно создать, изменить и удалить на работающем сервере за секунды, не трогая таблицу разделов. Производительность на современных файловых системах такая же.

Как потом убрать своп?

Выполните 'swapoff /swapfile', удалите строку /swapfile из /etc/fstab, затем 'rm /swapfile'.

Комментарии

Пока нет комментариев. Будьте первым.

Оставить комментарий

Комментарии проходят модерацию перед публикацией.