- Home »

Технические мелочи и фичи – Как настраивать swap?
Привет, коллега! Сегодня поговорим о swap — штуке, которая то спасает сервер, то убивает производительность в ноль. Если у тебя есть сайт, проект, дорвей, или ты просто хочешь, чтобы твой VPS не умер в самый нужный момент — эта статья для тебя. Разберёмся, зачем нужен swap, как его грамотно настраивать, какие подводные камни ждут и что делать, чтобы не наступить на грабли.
Введение: Почему swap — не просто «резервная память»
Swap — это область на диске (или файл), которую операционная система использует, когда заканчивается оперативная память (RAM). На первый взгляд, всё просто: нет RAM — подкинул swap, и сервер не падает. Но тут кроется куча нюансов:
- Swap медленнее RAM в десятки и сотни раз.
- Если swap настроен криво, сервер превращается в тормозную печку.
- Слишком большой swap — не всегда хорошо, а иногда даже зло.
- Есть разные способы и форматы swap: раздел, файл, zram/zswap.
Короче, если не хочешь, чтобы твой проект в пике трафика лег из-за нехватки памяти — читай дальше.
Основы: Что такое swap и зачем он нужен
Swap — это некая «подушка безопасности» для оперативки. Когда все процессы съели всю RAM, система начинает выгружать редко используемые страницы памяти в swap, освобождая место для новых задач.
- Плюсы: процессы не падают с ошибкой out of memory (OOM), сервер не умирает при пике нагрузки.
- Минусы: если swap начинает активно использоваться — сайт/сервис начинает жутко тормозить.
В современных реалиях swap — не способ «увеличить» память, а страховка от внезапных out of memory. Особенно если у тебя VPS с 1-2 ГБ RAM, а на нём крутится и nginx, и mysql, и php-fpm, и ещё что-то своё.
Swap-раздел или swap-файл?
Есть два классических способа организовать swap:
- Swap-раздел — отдельный раздел на диске. Надёжно, но не очень гибко (размер менять сложно).
- Swap-файл — обычный файл на существующем разделе. Гибко, можно создавать/удалять/менять размер на лету.
Современные дистрибутивы (Ubuntu, Debian, CentOS, AlmaLinux и др.) всё чаще по умолчанию используют swap-файл. И это удобно!
Практика: Как добавить или изменить swap
Проверяем, есть ли swap
free -h
swapon --show
Если swap есть, увидишь его размер. Если нет — не беда, сейчас добавим.
Создаём swap-файл
- Создаём файл нужного размера (например, 2 ГБ):
sudo fallocate -l 2G /swapfile
- Задаём права (очень важно!):
sudo chmod 600 /swapfile
- Инициализируем swap:
sudo mkswap /swapfile
- Включаем swap:
sudo swapon /swapfile
- Добавляем в автозагрузку (чтобы swap не исчез после ребута):
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Всё, swap работает. Проверяем:
swapon --show
Если нужно другой размер — просто удаляешь старый файл, создаёшь новый.
Удаляем swap
sudo swapoff /swapfile
sudo rm /swapfile
# Не забудь убрать строку из /etc/fstab!
Swap-раздел (если хочется по старинке)
Создавать swap-раздел сейчас редко нужно, но вдруг пригодится:
sudo fdisk /dev/sdX # создать новый раздел типа Linux swap (82)
sudo mkswap /dev/sdXn
sudo swapon /dev/sdXn
И прописать в /etc/fstab
по аналогии.
Тонкая настройка: swappiness и vm.vfs_cache_pressure
В Linux есть параметр swappiness — он определяет, как охотно система будет использовать swap. Значение от 0 до 100:
- 0 — swap используется только при критической нехватке RAM.
- 60 (по умолчанию) — система довольно активно свопит.
- 10-20 — оптимально для большинства серверов (swap — резерв, а не основа).
# Посмотреть текущее значение
cat /proc/sys/vm/swappiness
# Временно изменить (до ребута)
sudo sysctl vm.swappiness=10
# Постоянно (в /etc/sysctl.conf)
echo ‘vm.swappiness=10’ | sudo tee -a /etc/sysctl.conf
Ещё один параметр — vm.vfs_cache_pressure — влияет на то, как быстро система очищает кеш inode/dentry. Обычно менять не нужно, но если хочется поиграться с оптимизацией — можно снизить до 50-100.
Кейсы и примеры: когда swap спасает, а когда вредит
Позитивный кейс
У тебя сайт на WordPress, 1ГБ RAM. Вдруг ночью сканеры/боты начинают атаковать сайт, нагрузка растёт, RAM заканчивается. Без swap — сервер падает, nginx отваливается, сайт недоступен. С 1-2ГБ swap — система выдерживает всплеск, ты утром просыпаешься, а сайт жив.
Негативный кейс
Ты поставил 8ГБ swap на VPS с 2ГБ RAM, думая «пусть будет запас». В какой-то момент сервисы начинают жрать память, всё уходит в swap, диск начинает трещать, сайт еле живой, время отклика — секунды, а то и десятки. Swap не должен быть костылём для нехватки RAM!
Плюсы и минусы swap-файла
- Плюсы: легко масштабировать, не требует отдельного раздела, можно быстро удалить/добавить.
- Минусы: чуть медленнее swap-раздела (но на SSD разница минимальна), может фрагментироваться на очень загруженных системах.
Плюсы и минусы swap-раздела
- Плюсы: надёжно, чуть быстрее на HDD, не фрагментируется.
- Минусы: сложно менять размер, нужен отдельный раздел.
Бонус: ошибки новичков, советы и мифы
Частые ошибки
- Забыли задать права на swap-файл (chmod 600) — система ругается или не активирует swap.
- Поставили слишком высокий swappiness — система начинает свопить даже при наличии свободной RAM.
- Сделали swap больше, чем размер RAM в 2-4 раза — диск забивается, производительность падает.
- Не прописали swap в
/etc/fstab
— после перезагрузки swap исчезает.
Мифы о swap
- «Swap — это плохо, всегда отключайте!» — неправда. Swap нужен как страховка, просто не стоит на него полагаться.
- «Чем больше swap, тем лучше» — тоже миф. Большой swap не заменяет RAM, а при активном использовании сильно тормозит систему.
- «SSD умирает от swap» — современные SSD спокойно держат своп, если не долбить его терабайтами ежедневно.
Советы по выбору swap
- Для VPS/серверов с 1-4ГБ RAM — swap 1-2ГБ более чем достаточно.
- Если у тебя RAM 8ГБ и выше — swap можно делать 1ГБ или вообще не делать (если уверен, что хватит RAM).
- Для production-серверов — swap обязателен, но с низким swappiness (10-20).
- Для тестовых/разовых задач можно swap не делать.
Альтернативы: zswap и zram
В новых ядрах Linux есть прикольные фичи:
- zram — сжимает данные прямо в RAM, работает как очень быстрый swap (но жрёт CPU).
- zswap — сжимает данные перед записью в обычный swap.
Для VPS с очень ограниченной памятью zram может быть полезен. Подробнее: https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html
Заключение: Итоги и рекомендации
Swap — не волшебная палочка, а страховка от внезапных проблем с памятью. Делай swap-файл 1-2ГБ, если у тебя мало RAM, и не забывай про swappiness. Не полагайся на swap как на замену оперативки — если проект растёт, добавь RAM. А swap пусть будет как подушка безопасности, чтобы твой сайт не падал в самый неподходящий момент.
Настройка swap — это не rocket science, но и не «галочка в панели». Надо понимать, зачем он нужен, и как не сделать хуже. Если остались вопросы — пиши в комментариях, всегда рад помочь!
Официальные ссылки по теме:
Удачи в оптимизации и пусть swap будет только на подстраховку!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.