Маленьким серверам бракує пам'яті в найневдаліший момент: apt upgrade, збірка Docker, нічний бекап. Без свопу OOM killer ядра обирає процес і завершує його — часто вашу базу даних. Своп-файл — дешевий пасок безпеки, який дає цим пікам куди подітися. Потрібно п'ять команд.
1. Перевірте, що є зараз
swapon --show
free -h
Якщо swapon --show нічого не виводить, свопу поки немає.
2. Створіть своп-файл
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
chmod 600 важливий: у свопі можуть опинитися уривки чого завгодно з пам'яті, включно із секретами, тому читати його може лише root. Якщо fallocate лається «operation not supported», використайте dd:
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
3. Зробіть його постійним
Без цього кроку своп зникне після перезавантаження:
echo '/swapfile none swap sw 0 0' >> /etc/fstab
4. Налаштуйте swappiness
Попросіть ядро віддавати перевагу RAM і використовувати своп здебільшого за нестачі:
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl --system
5. Перевірте
swapon --show
free -h
Має з'явитися пристрій свопу на 2 ГБ, а cat /proc/sys/vm/swappiness має вивести 10.
Якого розміру робити?
- Сервер із 1–2 ГБ RAM: своп 1–2 ГБ.
- 4 ГБ і більше: 1–2 ГБ і далі досить як страховки.
Не робіть своп «удвічі більшим за RAM». На сервері своп потрібен, щоб поглинати короткі піки, а не запускати задачі, які не поміщаються в пам'ять.
Коли своп — не рішення
Поспостерігайте кілька днів:
vmstat 5
Колонки si і so показують сторінки, завантажені зі свопу й вивантажені в нього за секунду. Зрідка — нормально. Постійні ненульові значення означають, що пам'яті бракує і все чекає на диск. Тоді рішення — більше RAM: див. скільки RAM потрібно VPS. В EQVPS можна перейти на більший тариф без перевстановлення; дані збережуться.
Коментарі
Поки немає коментарів. Будьте першим.