Swap (своп) – один из самых простых способов повысить производительность сервера и предотвратить ошибки приложения «out of memory». Своп – это область на диске, в которой операционная система может временно хранить данные, которые больше не могут находиться в памяти. Использование swap увеличивает количество информации, которое может храниться на сервере, но при этом нужно учитывать, что обработка информации в swap'е намного медленнее, чем в оперативной памяти.
Для начала нужно проверить сервер на наличие активированного своп-пространства. Узнать, есть ли активное swap-пространство в текущей системе, можно при помощи утилиты swapon, запущенной с флагом -s.
swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 0 -2
Утилита выведет общую информацию об использовании SWAP и наличие своп-пространства на устройстве хранения. Если эта команда ничего не вернула, значит, в данной системе нет активного своп-файла.
Т.к. в качестве swap-пространства используется специально выделенная область диска, а изменить схему разбиения диска не всегда возможно, то swap-файл можно создать в уже существующем разделе. Прежде чем приступить к созданию такого файла, нужно получить информацию о свободном месте на диске. Для этого используется утилита df, с флагом -h
df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 875M 0 875M 0% /dev
tmpfs 887M 0 887M 0% /dev/shm
tmpfs 887M 8,6M 878M 1% /run
tmpfs 887M 0 887M 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 3,2G 47G 7% /
/dev/sda2 1014M 184M 831M 19% /boot
/dev/sda1 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home 74G 42M 74G 1% /home
tmpfs 178M 0 178M 0% /run/user/1000
tmpfs 178M 0 178M 0% /run/user/1001
tmpfs 178M 0 178M 0% /run/user/0
Как видно, в корневом разделе (смонтировано в "/") доступно 47ГБ. Этого вполне достаточно, чтобы разместить там swap-файл.
Существует множество мнений о «правильном» размере своп-пространства. В целом, это зависит от требований системы и личных предпочтений пользователя. Как правило, swap-пространство должно быть равно или вдвое больше объема оперативной памяти системы. В этом вопросе нужно ориентироваться на свободное дисковое пространство и здравый смысл. Узнать объём установленной на сервере оперативной памяти можно через утилиту free, с флагом -h (там же есть информация о доступных swap-разделах)
free -h
total used free shared buff/cache available
Mem: 5,5G 1,6G 3,6G 21M 268M 3,8G
Swap: 2,0G 0B 2,0G
Например, если RAM системы – 4 Гб, то swap-пространство должно занимать 8 Гб. Но 4 гб, для web-сервера средней руки - достаточно неплохой объём и добавлять к нему ещё 8 Гб не имеет смысла. Мы добавим 2 Гб - этого будет вполне достаточно!
Поскольку swap хранит временные файлы, то разумно создать его в папке /tmp и назвать swapfile
fallocate -l 2G /tmp/swapfile
После выполнения вышеприведеннной команды, нужно удостовериться в том, что файл создан
ls -lh /tmp/swapfile
-rw-r--r-- 1 root root 2,0G фев 19 01:09 /tmp/swapfile
После того, как файл создан, необходимо его подготовить к работе и сообщить о нём системе. Для начала нужно выставить необходимые права на файл
chmod 600 /tmp/swapfile
Затем, сконвертировать файл в файловую систему swap
mkswap /tmp/swapfile
Теперь можо примонтировать файл к системе
swapon /tmp/swapfile
Для того, чтобы не приходилось, после перезагрузки сервера, подключать swap повторно, его нужно внести в файл fstab. Для этого нужно отредактировать файл через любой текстовый редактор (я предпочитаю nano)
nano /etc/fstab
И в конце файла дбавить строку, с параметрами монтирования
/tmp/swapfile swap swap sw 0 0