MAATRIX / Блог / AlmaLinux 9: настройка swap и производительности с нуля

AlmaLinux 9: настройка swap и производительности с нуля

AlmaLinux 9: настройка swap и производительности с нуля

MAATRIX

Когда серверу не хватает оперативной памяти, ядро Linux начинает убивать процессы — и падает то база, то веб-сервер. Настройка swap и производительности AlmaLinux 9 с нуля даёт системе страховочную подушку: файл подкачки на диске подхватывает то, что не влезло в RAM, а тонкая настройка параметров ядра выжимает из скромного VPS максимум. Разберём по шагам, как создать swap, правильно выставить его агрессивность и подкрутить систему под реальную нагрузку в семействе RHEL.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Зачем нужен swap и когда он мешает

Swap (подкачка) — это область на диске, которую система использует как «медленную дополнительную память». Когда оперативная память заканчивается, ядро выгружает в swap редко используемые страницы, освобождая RAM для активных задач. Без swap на VPS с 1 ГБ памяти достаточно одного всплеска нагрузки, чтобы сработал OOM-killer и прибил важный процесс. Файл подкачки эту ситуацию сглаживает: вместо аварийного завершения система просто немного замедляется.

Но есть и обратная сторона, о которой честно стоит сказать. Диск в разы медленнее оперативной памяти, поэтому если сервер постоянно активно работает через swap, производительность резко падает — это состояние называют «свопингом до смерти». Swap — страховка на случай пиков, а не замена нормальному объёму RAM. Если ваш сервер живёт в swap постоянно, правильное решение не «увеличить подкачку», а взять тариф с большим объёмом памяти. Держите это в голове: swap лечит редкие пики, а не хроническую нехватку.

Проверяем текущее состояние памяти

Сначала посмотрите, сколько памяти и swap уже есть:

free -h

Флаг -h показывает значения в человекочитаемом виде. Если в строке Swap стоят нули, подкачки нет, и мы её создадим. Многие облачные образы AlmaLinux идут вообще без swap. Заодно оцените строку Mem: сколько памяти всего и сколько занято, это отправная точка. Полезно взглянуть и на свободное место на диске командой df -h, потому что файл подкачки займёт место в файловой системе, и его должно хватать.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS на AlmaLinux 9

Создаём файл подкачки

Оптимальный размер swap для сервера обычно равен объёму RAM или чуть больше — для 1–2 ГБ памяти достаточно файла на 2 ГБ. Создайте его, выделив место, задав права и отформатировав под подкачку:

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Разберём по шагам. fallocate -l 2G мгновенно создаёт файл нужного размера. chmod 600 закрывает файл от чтения посторонними — важно, ведь в подкачке может оказаться чувствительная информация. mkswap размечает файл как область подкачки, а swapon включает её немедленно. Мы делаем именно файл, а не отдельный раздел, потому что на облачном VPS диск обычно единый, а файл легко изменить в размере в любой момент. Проверьте результат командой free -h — теперь в строке Swap появится 2 ГБ.

Делаем swap постоянным

Команда swapon включает подкачку только до перезагрузки. Чтобы swap подключался автоматически при каждом старте, добавьте его в таблицу файловых систем:

echo '/swapfile none swap sw 0 0' >> /etc/fstab

Эта строка говорит системе при загрузке подключать /swapfile как область подкачки. Без неё после первой же перезагрузки swap исчезнет, и вы можете этого не заметить, пока сервер снова не упрётся в нехватку памяти. Проверить корректность записи можно, выполнив swapoff /swapfile && swapon -a — если ошибок нет, значит /etc/fstab прописан правильно. В AlmaLinux с включённым SELinux файл подкачки в стандартном расположении корня работает без дополнительной разметки контекста, так что здесь подвоха нет.

Настраиваем swappiness

Параметр vm.swappiness определяет, насколько охотно ядро использует swap: чем выше значение (по умолчанию 30 или 60 в зависимости от системы), тем раньше система начинает выгружать данные на диск. Для сервера это часто слишком агрессивно. Снизьте значение:

sysctl vm.swappiness=10

Значение 10 означает: пользуйся оперативной памятью до последнего, а к медленному диску обращайся только когда RAM почти закончилась. Чтобы настройка пережила перезагрузку, в RHEL-семействе принято класть параметры в отдельный файл в каталоге /etc/sysctl.d/, например /etc/sysctl.d/99-swap.conf, со строкой vm.swappiness=10. Важно не путать swappiness с размером swap: размер задаёт, сколько всего места доступно под подкачку, а swappiness — насколько рано система вообще начинает им пользоваться. Идеал для сервера — достаточный по размеру swap с низким swappiness.

Тонкая настройка производительности

Помимо swappiness стоит подкрутить параметр vm.vfs_cache_pressure, отвечающий за то, как активно система вытесняет кэш файловой системы. Снижение его до 50 помогает дольше держать в памяти информацию о файлах, ускоряя работу с диском:

sysctl vm.vfs_cache_pressure=50

Не увлекайтесь бездумной правкой десятков параметров sysctl — чаще это вредит, чем помогает. На типовом VPS достаточно двух настроек: swappiness и vfs_cache_pressure. Все изменения, которые должны пережить перезагрузку, кладите в файл в /etc/sysctl.d/ и применяйте командой sysctl --system, которая перечитывает все такие файлы. Так вы держите настройки аккуратно и всегда понимаете, что и зачем поменяли. Консервативный подход в духе корпоративного AlmaLinux: менять только то, что реально даёт эффект.

Стоит понимать, почему в RHEL-семействе параметры ядра принято класть в отдельные файлы каталога /etc/sysctl.d/, а не валить всё в один общий /etc/sysctl.conf, как по старинке делают в некоторых руководствах. Раздельные файлы удобнее сопровождать: настройки подкачки лежат в своём файле, сетевые — в своём, и при разборе конфигурации сразу видно, что и зачем задано. Такие файлы подхватываются в алфавитном порядке, поэтому им дают числовые префиксы вроде 99-swap.conf — число управляет приоритетом, если один и тот же параметр встречается в нескольких местах. Этот аккуратный, модульный стиль конфигурации пронизывает весь AlmaLinux, и, приняв его, вы получаете систему, в настройках которой легко разобраться даже спустя месяцы, а не ворох правок в одном разросшемся файле.

Проверяем результат и следим за нагрузкой

После настройки понаблюдайте за поведением сервера. Команда free -h покажет, используется ли swap; команда vmstat 1 в реальном времени отобразит колонки si и so — объём данных, уходящих в подкачку и возвращающихся из неё. Если эти значения почти всегда нулевые, а всплески редки, — настройка идеальна: swap стоит подушкой и не тормозит систему. Если же si/so постоянно ненулевые, сервер хронически упирается в память, и честный вывод один — пора добавить оперативной памяти, увеличив тариф. Swap своё дело сделал, но железо тоже имеет предел, и признать это вовремя дешевле, чем терпеть постоянные тормоза.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS на AlmaLinux 9

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Какого размера делать swap?

Для сервера обычно берут объём, равный RAM, или чуть больше. Для 1–2 ГБ памяти хватает файла на 2 ГБ; огромный swap не имеет смысла — если он активно нужен, проблема в нехватке RAM.

Swap на SSD не убивает диск?

Современные SSD рассчитаны на большой ресурс записи, а при низком swappiness подкачка используется редко. Для страховки от пиков это безопасно.

Влияет ли SELinux на файл подкачки?

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

Как оплатить VPS с большим объёмом RAM из России?

У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой и токеном MAAT — иностранная карта не требуется.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.