Start typing to search across invoices, services, domains, tickets, and more...
На VPS с небольшим объёмом RAM сборка программ, работа базы данных или резкий всплеск трафика могут исчерпать память и вызвать OOM killer, который завершает процессы вроде MySQL. Добавление swap в Linux позволяет ядру выгружать редко используемые данные на диск при нехватке памяти и служит страховочным буфером. В статье описано, как создать файл подкачки, включить его при загрузке и настроить swappiness на KVM VPS и выделенных серверах с Debian/Ubuntu или CentOS/Rocky/AlmaLinux.
Командой free -h посмотрите память и текущий swap, swapon --show покажет, включён ли swap, а df -h — достаточно ли места на корневом разделе. Рекомендуемые размеры:
| Объём RAM | Рекомендуемый swap |
|---|---|
| до 1 ГБ | 1–2 ГБ |
| 2–4 ГБ | 2 ГБ |
| от 8 ГБ | 2–4 ГБ (по необходимости) |
free -h
swapon --show
df -h /
fallocate мгновенно выделяет файл нужного размера. Если появляется сообщение, что операция не поддерживается (на некоторых старых файловых системах), используйте dd — медленнее, но работает везде. В примерах создаётся файл /swapfile размером 2 ГБ.
# Create a 2 GB swap file
fallocate -l 2G /swapfile
# If fallocate fails ("Operation not supported"), use dd instead
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
В файл подкачки могут попадать конфиденциальные данные из памяти, поэтому доступ к нему должен быть только у root (600). Отформатируйте его через mkswap и сразу включите swapon — free -h покажет размер swap.
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon --show
free -h
swapon действует только до перезагрузки. Добавьте строку в fstab, чтобы swap подключался автоматически. Предварительно сделайте копию fstab.
cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Параметр swappiness (0–100) определяет, насколько активно ядро использует swap. На серверах обычно лучше сначала использовать RAM, а swap — только при необходимости, поэтому подойдёт значение около 10. Чтобы настройка сохранялась, запишите её в /etc/sysctl.d/.
cat /proc/sys/vm/swappiness # usually 60 (Debian/Ubuntu) or 30 (some RHEL images)
sysctl vm.swappiness=10 # apply now
# Make it permanent
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swappiness.conf
sysctl --system
Если swap больше не нужен или требуется изменить размер, отключите его, удалите строку из fstab и сам файл. Для изменения размера просто повторите шаги 2–4.
swapoff /swapfile
sed -i '\|^/swapfile |d' /etc/fstab
rm -f /swapfile
free -h
«Invalid argument» обычно означает, что файл создан fallocate на файловой системе, не поддерживающей такой swap, — пересоздайте его через dd. «Operation not permitted» чаще всего говорит о контейнерной виртуализации, где добавлять swap нельзя; уточните у поддержки.
Нет. Огромный swap не ускоряет работу и лишь занимает диск, а при активном использовании swap система сильно тормозит. Ориентируйтесь на таблицу выше, а при реальной нехватке памяти увеличьте тариф.
Выполните grep VmSwap /proc/*/status | sort -k2 -n | tail, чтобы увидеть главных потребителей, или включите столбец SWAP в htop.
Если проблема не решилась, создайте тикет — техническая поддержка IMIDC работает круглосуточно 24/7. Укажите IP-адрес сервера, операционную систему, выполненные команды и приложите скриншот ошибки: так инженер разберётся быстрее.