Найти в Дзене
WebHOST1.ru

Оптимизация SWAP в Linux: меньше лагов, больше стабильности

Когда на VPS или выделенном сервере падает скорость отклика и приложения начинают работать медленнее, причина не всегда в «слабом железе». Нередко источник проблем — неудачная конфигурация SWAP, то есть области на диске, которую Linux использует как продолжение оперативной памяти. Корректная настройка параметров ядра помогает разгрузить систему и снизить риск зависаний под высокой нагрузкой. Linux эффективно управляет памятью: активно кеширует, гибко распределяет ресурсы между процессами и сохраняет работоспособность даже при небольшом объёме ОЗУ. Однако в такой модели система способна преждевременно обращаться к подкачке. На SSD это ускоряет износ, на HDD вызывает заметное падение скорости, поскольку доступ к диску гораздо медленнее, чем к RAM. Чтобы этого не происходило, администраторы настраивают частоту обращения к SWAP, поведение кешей и алгоритмы записи на диск через параметры в файле /etc/sysctl.conf. Эти изменения не требуют дополнительного ПО и обычно дают быстрый ощутимый эфф
Оглавление

Когда на VPS или выделенном сервере падает скорость отклика и приложения начинают работать медленнее, причина не всегда в «слабом железе». Нередко источник проблем — неудачная конфигурация SWAP, то есть области на диске, которую Linux использует как продолжение оперативной памяти. Корректная настройка параметров ядра помогает разгрузить систему и снизить риск зависаний под высокой нагрузкой.

Введение

Linux эффективно управляет памятью: активно кеширует, гибко распределяет ресурсы между процессами и сохраняет работоспособность даже при небольшом объёме ОЗУ. Однако в такой модели система способна преждевременно обращаться к подкачке. На SSD это ускоряет износ, на HDD вызывает заметное падение скорости, поскольку доступ к диску гораздо медленнее, чем к RAM. Чтобы этого не происходило, администраторы настраивают частоту обращения к SWAP, поведение кешей и алгоритмы записи на диск через параметры в файле /etc/sysctl.conf. Эти изменения не требуют дополнительного ПО и обычно дают быстрый ощутимый эффект.

Как работает SWAP в Linux

SWAP — это пространство на диске, куда ядро выгружает страницы памяти при дефиците ОЗУ. Такой механизм снижает риск аварийного завершения процессов, но расплачивается дополнительными задержками ввода-вывода. Слишком раннее или чрезмерно активное использование подкачки приводит к замедлению баз данных и веб-сервисов из-за постоянных обращений к диску, ускоряет износ SSD и способно «парализовать» сервер под пиковыми нагрузками, даже когда свободная память ещё остаётся. Цель настройки — не запретить подкачку, а сместить её в разряд крайней меры.

Настройка swappiness

Параметр vm.swappiness задаёт склонность ядра выгружать страницы в подкачку. Значение по умолчанию равно 60, что провоцирует переход к активной работе со SWAP задолго до реального исчерпания ОЗУ. Для серверов чаще всего помогает диапазон 10–20, при котором подкачка задействуется значительно позже. Достаточно добавить в конфигурацию строку:

vm.swappiness = 10

Обычно это уменьшает лишний дисковый IO и улучшает отклик приложений.

Контроль «грязных» страниц

Linux сначала хранит изменённые данные в памяти, а затем сбрасывает их на диск. Когда объём таких страниц велик, система может на время «замирать», массово записывая накопившуюся информацию. На поведение влияют параметры vm.dirty_background_ratio и vm.dirty_ratio. Первый определяет порог, начиная с которого ядро запускает асинхронный сброс на диск, второй ограничивает максимальную долю RAM, которую могут занимать изменённые страницы. По умолчанию значения составляют 10 и 20 процентов. На серверах с большим объёмом ОЗУ такие пороги способны вызывать заметные паузы. На практике помогает смещение в сторону более редких, но крупных сбросов. Например:

vm.dirty_background_ratio = 20
vm.dirty_ratio = 40

Такая конфигурация уменьшает количество мелких операций записи и делает поведение приложений стабильнее под нагрузкой.

Практические сценарии для VPS

На сайтах с WordPress или 1С-Битрикс в периоды повышенного трафика PHP и СУБД активно потребляют память. Снижение значения vm.swappiness уменьшает вероятность ухода в подкачку и связанных с этим задержек. Игровые серверы чувствительны к латентности, поэтому корректировка dirty_ratio помогает избежать лагов в моментах записи логов и игровых данных. На девелоперских VPS, где параллельно запущены IDE, база данных и веб-сервисы, сочетание настроек swappiness и параметров «грязных» страниц позволяет комфортно работать даже на тарифах с 1–2 ГБ RAM.

Как применить изменения

Все упомянутые параметры задаются в /etc/sysctl.conf. Минимальный набор может выглядеть так:

vm.swappiness = 10
vm.dirty_background_ratio = 20
vm.dirty_ratio = 40

Чтобы применить новые значения без перезагрузки, выполните команду:

sysctl -p

Дополнительные рекомендации

Имеет смысл рассмотреть zram или zswap. Оба механизма используют сжатие в памяти и уменьшают нагрузку на диск. Мониторьте сообщения ядра через dmesg и показатели в vmstat или htop, чтобы понимать реальную частоту обращений к подкачке. На серверах с SSD не стоит чрезмерно увеличивать объём SWAP: избыточные записи ускоряют износ. Если памяти стабильно не хватает, рациональнее увеличить объём RAM или подключить zram.

Заключение

Увеличение объёма подкачки само по себе не устраняет дефицит памяти. Более заметный результат даёт корректная настройка параметров ядра: уменьшается лишняя запись на диск, поведение приложений становится предсказуемее, оборудование служит дольше. Для администраторов VPS это один из самых быстрых способов повысить устойчивость системы: несколько строк в sysctl.conf часто избавляют от зависаний и непонятных провалов производительности.