Swap на VPS: зачем нужен и как настроить
Приложение падает с ошибкой нехватки памяти, хотя нагрузка вроде небольшая. Знакомая ситуация на VPS со скромной конфигурацией. Один из способов подстраховаться - swap, файл подкачки, который система использует как резервную память, когда основной не хватает.
Разберём, что такое swap, когда он реально помогает, а когда лишь сигнализирует о проблеме, как создать swap-файл на VPS и почему постоянная работа в swap - это не решение, а повод добавить памяти.
Что такое swap
Swap (файл подкачки) - это место на диске, которое система использует как продолжение оперативной памяти. Когда RAM заканчивается, наименее нужные данные временно выгружаются в swap на диск, освобождая память под активные задачи.
Ключевой момент: swap намного медленнее оперативной памяти. Диск, даже быстрый NVMe, в разы медленнее RAM. Поэтому swap - это не замена памяти, а страховка: он не даёт системе рухнуть при нехватке RAM, но работать через него постоянно означает жить с тормозами.
Зачем нужен swap
Swap решает конкретную проблему: что делать, когда память кончилась. Без swap Linux в этот момент начинает принудительно завершать процессы - и падает то приложение, которому не хватило памяти. Со swap система сначала выгрузит что-то на диск и попробует продолжить.
Польза swap:
- страховка от падения при коротких пиках нагрузки - вместо аварийного завершения процесса система переживёт всплеск;
- запас для редких тяжёлых операций - разовая ресурсоёмкая задача не уронит сервер;
- буфер на маленьких конфигурациях - на сервере с 1 ГБ памяти swap заметно снижает риск падений.
Но важно понимать границу: swap спасает от разовых пиков, а не от постоянной нехватки памяти.
Когда swap помогает, а когда сигналит о проблеме
Это главное, что нужно понять про swap.
Swap помогает, когда память кончается изредка - на коротких пиках. Система на секунды уходит в swap, переживает всплеск и возвращается к нормальной работе. Это его правильное применение.
Swap сигналит о проблеме, когда сервер работает в нём постоянно. Если система всё время что-то выгружает и подгружает с диска, это значит, что памяти хронически не хватает. Такой сервер тормозит, потому что медленный диск используется вместо быстрой RAM.
| Ситуация | Что значит |
|---|---|
| Swap почти не используется | Памяти хватает, всё хорошо |
| Swap задействуется на пиках | Работает как надо, страхует |
| Сервер постоянно в swap | Памяти не хватает, нужно добавить RAM |
Проверить, ушла ли система в swap, можно командой:
free -hЕсли в строке Swap постоянно заняты сотни мегабайт и больше, а система тормозит - это сигнал добавить оперативную память, а не наращивать swap.
Как создать swap-файл
На VPS swap чаще делают файлом, а не отдельным разделом - это проще и гибче. Порядок такой.
Создаём swap-файл нужного размера (здесь 2 ГБ):
sudo fallocate -l 2G /swapfileОграничиваем к нему доступ и размечаем как swap:
sudo chmod 600 /swapfile
sudo mkswap /swapfileВключаем swap:
sudo swapon /swapfileПроверяем, что он подключился:
free -hВ строке Swap появится размер созданного файла. Чтобы swap подключался автоматически после перезагрузки, добавляют строку в файл /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabСколько swap делать
Общий ориентир зависит от объёма памяти:
| RAM | Рекомендуемый swap |
|---|---|
| 1 ГБ | 1-2 ГБ |
| 2-4 ГБ | равный объёму RAM |
| 8 ГБ и больше | 2-4 ГБ достаточно |
Смысл в том, что swap - это страховка на пики, а не полноценная замена памяти, поэтому огромный swap не нужен. На больших конфигурациях фиксированных нескольких гигабайт хватает.
Частые ошибки
Наращивают swap вместо памяти. Сервер постоянно в swap и тормозит, а в ответ увеличивают swap. Это лечит симптом, а не причину: если памяти не хватает хронически, нужна RAM, а не диск.
Считают swap заменой памяти. Swap в разы медленнее RAM. Работать через него постоянно - значит мириться с тормозами. Он страховка, а не замена.
Не добавили swap в fstab. После перезагрузки swap отключился. Чтобы подключался сам, его прописывают в /etc/fstab.
Делают swap на медленном диске. На HDD swap особенно тормозит. На NVMe он ощутимо быстрее, хоть всё равно медленнее RAM.
Частые вопросы
Нужен ли swap на VPS? Полезен как страховка от падений при пиках нагрузки, особенно на конфигурациях с малым объёмом памяти. Но постоянная работа в swap означает нехватку RAM - тогда нужна память, а не swap.
Заменяет ли swap оперативную память? Нет. Swap в разы медленнее RAM, потому что это диск. Он не даёт системе упасть при нехватке памяти, но работать через него постоянно - значит терпеть тормоза. Это страховка, а не замена.
Сколько swap делать? Ориентир: на 1 ГБ RAM - 1-2 ГБ swap, на 2-4 ГБ - примерно равный объёму памяти, на 8 ГБ и больше достаточно 2-4 ГБ. Огромный swap не нужен: это страховка на пики, а не замена RAM.
Как понять, что пора добавить память, а не swap? Если сервер постоянно работает в swap и тормозит - это сигнал нехватки RAM. Проверить можно командой free -h: если Swap стабильно занят, а система медленная, нужно добавлять память.
Swap замедляет сервер? Сам по себе включённый swap не замедляет. Замедляет активная работа через него: когда система постоянно читает и пишет на диск вместо RAM. Изредка задействованный swap на пиках - это нормально.
Можно ли обойтись без swap? Можно, если памяти с запасом хватает под все задачи. Но небольшой swap как страховка от разовых пиков обычно не помешает, особенно на скромных конфигурациях. Как рассчитать память под задачу - в статье как выбрать конфигурацию сервера.
Не хватает памяти на сервере? VPS на NVMe с ресурсами, которые меняются за минуты - добавьте память, когда упрётесь в потолок, вместо жизни в swap. Гарантированные ресурсы без оверселлинга. Первые 7 дней - тестовый период с возвратом средств.