Флаг: English English

Swap: Зачем он нужен и как его включить

Опубликовано 03.09.2025

Swap — это виртуальная память на диске, которая спасает VPS от падения, когда заканчивается ОЗУ. На дешёвых серверах это незаменимый инструмент, который позволит избежать сбоев при кратковременных пиках потребления памяти. Настройка проста: создать файл, включить его и добавить в автозагрузку. Но помните, что это страховка, а не замена оперативной памяти.


Введение

Современные VPS, как правило, создаются с достаточным количеством оперативной памяти, но зачастую без swap (файла или раздела подкачки). Это осознанный выбор провайдеров, которые хотят, чтобы вы быстрее перешли на более дорогой тариф.

В итоге, когда вы сталкиваетесь с нехваткой памяти, система начинает вести себя непредсказуемо, а в худшем случае — срабатывает OOM Killer (Out of Memory Killer), который принудительно завершает процессы.

На недорогих тарифах, где каждый мегабайт на счету, swap становится важным инструментом. Он не заменит RAM, но спасёт сервер от падения в моменты, когда нужно больше памяти, чем физически доступно.

Что такое swap и как он работает

Swap — это область на жёстком диске или SSD, которую Linux использует как дополнительную оперативную память. Когда RAM заполняется, ядро системы перемещает менее используемые данные в swap, освобождая место для активных процессов.

Это полезно для задач с кратковременными всплесками потребления памяти:

  • Компиляторы (npm, gcc).
  • Базы данных (MySQL, PostgreSQL), которые временно кэшируют большие объёмы.
  • Фоновые скрипты и cron-задачи.

Важно понимать: доступ к диску на порядки медленнее, чем к RAM. Swap — это страховка, а не способ ускорить систему.


Как включить Swap на VPS

Большинство провайдеров (DigitalOcean, Vultr и др.) не включают swap по умолчанию, но вы можете создать его самостоятельно с помощью файла.

  1. Создание файла
    sudo fallocate -l 1G /swapfile
    
    Если fallocate недоступен:
    sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
    
  2. Ограничение прав доступа
    sudo chmod 600 /swapfile
    
  3. Инициализация и активация
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
  4. Автозагрузка после перезагрузки
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    
  5. Настройка swappiness По умолчанию = 60. Для серверов обычно ставят 10 или меньше:
    sudo sysctl vm.swappiness=10
    
    Чтобы сохранить: добавьте vm.swappiness=10 в /etc/sysctl.conf. 💡 Дополнительно: снизить агрессивность очистки inode/dentry кэша можно так:
    vm.vfs_cache_pressure=50
    

Проверка работы

Память и swap:

free -h

Активные swap-разделы/файлы:

swapon --show

Как выбрать размер swap

Рекомендации варьируются:

  • RAM ≤ 2 ГБ: RAM × 2
  • 2–8 ГБ: RAM × 1
  • 8–16 ГБ: 2–4 ГБ
  • > 16 ГБ: 1–2 ГБ (или без swap)

Когда swap не нужен

Swap не всегда полезен:

  • Серверы с большим объёмом RAM (32 ГБ+) — вероятность нехватки памяти минимальна.
  • Базы данных с тонкой настройкой — swap может ухудшить производительность из-за I/O.
  • Kubernetes и контейнеры — swap обычно отключается ради предсказуемости.
  • Некоторые провайдеры (например, OpenVZ-VPS или managed Kubernetes) — swap может быть запрещён.
  • ⚠ На SSD/NVMe активный swap ускоряет износ накопителя.

Заключение

Swap — это страховка от OOM Killer, а не способ ускорить сервер. При правильной настройке он позволяет:

  • Пережить всплески потребления памяти.
  • Снизить риск сбоев и падений приложений.
  • Сэкономить на апгрейде тарифа VPS. Но использовать его нужно с пониманием ограничений и как временное решение.

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Похожие посты