AlmaLinux 9: настройка swap и производительности с нуля
Когда серверу не хватает оперативной памяти, ядро 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 — десятки моделей в одном окне. Оплата картой РФ и по СБП.