Настройка swap на VPS: страхуем сервер от нехватки памяти
На младших тарифах памяти немного, и при пике нагрузки ядро может убить процесс через OOM-killer. Swap — файл подкачки на диске — работает страховкой. Разберём, как создать его правильно и не убить производительность.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Зачем нужен swap
Когда оперативная память заканчивается, Linux начинает убивать процессы (OOM-kill) — падает база, приложение или сам nginx. Swap даёт ядру выгрузить неактивные страницы на диск и пережить пик.
Swap не заменяет RAM и медленнее её, но на NVMe у MAATRIX подкачка работает в разы быстрее, чем на обычных HDD — как аварийный буфер это вполне комфортно.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS с NVMe-дискомПроверяем, есть ли swap
swapon --show
free -h
Если swapon --show ничего не выводит — swap отсутствует, создаём. Строка Swap в free -h покажет 0B при его отсутствии.
Создаём swap-файл
Размер обычно берут равным RAM (до 4 ГБ памяти) или половине при большем объёме. Создадим файл на 2 ГБ:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
Права 600 обязательны — иначе ядро откажется использовать файл из соображений безопасности. Проверяем:
swapon --show
free -h
Делаем постоянным
После перезагрузки swap отключится, если не прописать его в fstab:
echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab
Теперь swap подключится автоматически при старте системы. Проверить корректность fstab без перезагрузки: mount -a (ошибок быть не должно).
Тонкая настройка swappiness
Параметр swappiness (0-100) определяет, насколько охотно ядро уходит в swap. По умолчанию 60 — многовато для сервера. Ставим 10, чтобы подкачка включалась только при реальной нехватке:
sysctl vm.swappiness=10
echo 'vm.swappiness=10' | tee -a /etc/sysctl.conf
- Сервер тормозит и много swap — swappiness высокий или реально мало RAM, задумайтесь о тарифе побольше.
- fallocate ошибается на некоторых ФС — используйте
dd if=/dev/zero of=/swapfile bs=1M count=2048. - Убрать swap:
swapoff /swapfile, удалить строку из fstab,rm /swapfile.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS с NVMe-дискомОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Какого размера делать swap?
Практичное правило: равен RAM при памяти до 4 ГБ, половина RAM при большем объёме. Для аварийного буфера хватает 2 ГБ.
Swap вредит SSD/NVMe?
Современные NVMe рассчитаны на огромный ресурс записи, а при swappiness=10 подкачка используется редко. На практике износ ничтожен.
Swap заменит апгрейд памяти?
Нет. Swap — страховка от редких пиков, а не замена RAM. Если сервер постоянно в подкачке — пора на тариф с большим объёмом памяти у MAATRIX.