Настройка swap на VPS: страхуем сервер от нехватки памяти
На младших тарифах памяти немного, и при пике нагрузки ядро может убить процесс через OOM-killer. Swap — файл подкачки на диске — работает страховкой. Разберём, как создать его правильно и не убить производительность.
Содержание
Зачем нужен swap
['Когда оперативная память заканчивается, Linux начинает убивать процессы (OOM-kill) — падает база, приложение или сам nginx. Swap даёт ядру выгрузить неактивные страницы на диск и пережить пик.', 'Swap не заменяет RAM и медленнее её, но на NVMe у MAATRIX подкачка работает в разы быстрее, чем на обычных HDD — как аварийный буфер это вполне комфортно.']Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS с NVMe-дискомПроверяем, есть ли swap
['swapon --show\nfree -h', 'Если swapon --show ничего не выводит — swap отсутствует, создаём. Строка Swap в free -h покажет 0B при его отсутствии.']
Создаём swap-файл
['Размер обычно берут равным RAM (до 4 ГБ памяти) или половине при большем объёме. Создадим файл на 2 ГБ:', 'fallocate -l 2G /swapfile\nchmod 600 /swapfile\nmkswap /swapfile\nswapon /swapfile', 'Права 600 обязательны — иначе ядро откажется использовать файл из соображений безопасности. Проверяем:', 'swapon --show\nfree -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\necho '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-дискомЧастые вопросы
Какого размера делать swap?
Практичное правило: равен RAM при памяти до 4 ГБ, половина RAM при большем объёме. Для аварийного буфера хватает 2 ГБ.
Swap вредит SSD/NVMe?
Современные NVMe рассчитаны на огромный ресурс записи, а при swappiness=10 подкачка используется редко. На практике износ ничтожен.
Swap заменит апгрейд памяти?
Нет. Swap — страховка от редких пиков, а не замена RAM. Если сервер постоянно в подкачке — пора на тариф с большим объёмом памяти у MAATRIX.