Настройка SWAP
Периодически системе может не хватать физической оперативной памяти для обслуживания всех приложений. Решением как правило является увеличение объёма RAM в соответствии с задачами. Но порой нехватка памяти случается лишь изредка, в этом случае поможет настройка Swap.
Обратите внимание: мы не рекомендуем Вам включать SWAP на серверах, работающих на SSD-дисках. Использование SWAP вместе с SSD-дисками может существенно снизить время работы SSD-диска, это связано с тем, что у таких дисков есть предел по количеству циклов записи, а использование Swap как раз активно записывает данные на диск.

Что такое Swap?

Swap - это пространство на жёстком диске, которое предназначено для записи временных файлов операционной системой в случае, когда оперативной памяти (RAM) уже не хватает. В общем случае это даёт возможность использовать больше оперативной памяти, чем есть физически, но в то же время это снижает производительность жёстких дисков.

Настройка SWAP

Включён ли уже Swap?

Первым делом нужно проверить, включён ли уже Swap в системе или же ещё нет. Выполните следующую команду в SSH:
1
swapon --show
Copied!
Если в результате выполнения команды система ничего не выдала, значит SWAP ещё не включён.
Вы можете также проверить, включён ли Swap с помощью утилиты free:
1
free -h
Copied!
В результате Вы должны увидеть что-то вроде:
1
total used free shared buff/cache available
2
Mem: 996M 44M 639M 4.5M 312M 812M
3
Swap: 0B 0B 0B
Copied!
Как видно по последней строке, Swap не активирован.

Есть ли на сервере свободное место?

Перед активацией Swap нужно также проверить, есть ли на сервере достаточный объём дискового пространства. Вы можете сделать это с помощью команды:
1
df -h
Copied!
В результаты Вы увидите что-то вроде:
1
Filesystem Size Used Avail Use% Mounted on
2
udev 488M 0 488M 0% /dev
3
tmpfs 100M 4.5M 96M 5% /run
4
/dev/vda1 25G 989M 23G 5% /
5
tmpfs 499M 0 499M 0% /dev/shm
6
tmpfs 5.0M 0 5.0M 0% /run/lock
7
tmpfs 499M 0 499M 0% /sys/fs/cgroup
8
tmpfs 100M 0 100M 0% /run/user/1001
Copied!
В данном примере устройство /dev/vda1 является основным диском системы. Занято лишь 5% от общего объёма, значит можно настраивать Swap.

Создание Swap-файла

Самый простой способ создать файл Swap - использовать утилиту fallocate. Эта утилита быстро создаст файл нужного нам размера.
Поскольку сервер в примере имеет 1 Гб RAM, мы можем создать Swap-файл объёмом в 2 Гб:
1
fallocate -l 2G /swapfile
Copied!
Проверить корректность создания файла можно командой:
1
ls -lh /swapfile
Copied!
В результате Вы увидите:
1
-rw-r--r-- 1 root root 2.0G Jul 20 13:30 /swapfile
Copied!

Включение Swap

После создания файла Swap мы можем приступить к активации Swap в системе.
Сначала нам нужно дать файлу необходимые права доступа:
1
chmod 600 /swapfile
Copied!
Теперь мы можем пометить файл как файл, предназначенный для Swap:
1
mkswap /swapfile
Copied!
Далее нужно включить Swap в системе:
1
swapon /swapfile
Copied!
Теперь проверим, всё ли включилось правильно:
1
swapon --show
Copied!
В результате Вы должны увидеть что-то вроде:
1
NAME TYPE SIZE USED PRIO
2
/swapfile file 2048M 0B -1
Copied!
И теперь проверим вывод утилиты free:
1
free -h
Copied!
1
total used free shared buff/cache available
2
Mem: 996M 44M 637M 4.5M 314M 811M
3
Swap: 2.0G 0B 2.0G
Copied!
Если вывод на Вашей системе соответствует приведённым выше двум примерам, значит Swap успешно активирован.

Настройка постоянной работы Swap

Чтобы Swap не исчез после перезагрузки сервера, нужно сделать его работу постоянной. Для этого нам понадобится подправить файл с разделами файловой системы сервера.
Сначала сделаем копию файла:
1
cp /etc/fstab /etc/fstab.bak
Copied!
Теперь добавим в него запись о Swap-файле:
1
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Copied!

Гибкая настройка Swap

Описанные ниже действия не являются обязательными, но Вы можете использовать эти настройки для повышения производительности Вашей системы при активном Swap.
Параметр swappiness позволяет настроить частоту сброса данных из RAM в Swap. Значение определяется в процентах, от 0 до 100. При значении около 0 система не будет сбрасывать данные без очень веской необходимости. При значении около 100 система будет активно использовать Swap для того, что было как можно больше свободной оперативной памяти. Это может существенно замедлить работу дисков, но и повысить производительность некоторого ПО.
Текущее значение параметра swappiness можно увидеть с помощью команды:
1
cat /proc/sys/vm/swappiness
Copied!
1
60
Copied!
Мы рекомендуем установить значение от 0 до 10. Для установки значения выполните команду:
1
sysctl vm.swappiness=10
Copied!
Настройка будет действовать до следующей перезагрузки. Чтобы сделать её постоянной, выполните команду:
1
echo 'vm.swappiness=10' >> /etc/sysctl.conf
Copied!
Другой параметр, который может помочь - vfs_cache_pressure. Он определяет, будет ли система кэшировать данные о inode (данные о файловой системе) и как часто. Чем выше значение, тем чаще система будет обновлять данные. Мы рекомендуем установить значение в 50.
Last modified 1yr ago