Пам'ять і swap: коли час переходити на вищий тариф
Як відрізнити нормальне використання пам'яті від нестачі, навіщо потрібен swap на малому тарифі та за якими ознаками вирішувати про перехід на вищий план.
Оновлено 23 серпня 2026 р.
«120 МБ вільно з 2 ГБ» лякає новачків і нічого не означає в Linux: система навмисно використовує вільну пам'ять для кешу файлів, бо порожня пам'ять марна. Реальну картину дає інший стовпець.
Як правильно читати free
free -h
# total used free shared buff/cache available
# Mem: 1.9Gi 742Mi 102Mi 18Mi 1.1Gi 1.0Gi
# Swap: 1.0Gi 126Mi 898Mi
Дивіться на available — скільки пам'яті застосунок може отримати, витіснивши кеш. Поки це значення тримається далеко від нуля, з машиною все гаразд. free у цьому сенсі марний.
Тривожні ознаки:
availableменше ніж 10% відtotal;Swap usedзростає й не звільняється;- у
vmstat 2значенняsi/soненульові й постійні — система безперервно вивантажує сторінки на диск.
Що саме з'їдає пам'ять:
ps aux --sort=-%mem | head -10
smem -tk -s uss 2>/dev/null | tail -10
Swap: потрібен чи ні
Невеликий swap корисний на будь-якому тарифі: він дає системі простір для переміщення сторінок, які давно не використовувалися, і захищає від миттєвої загибелі процесу під час короткого сплеску. Але він не замінює пам'ять — диск у сотні разів повільніший.
Створіть swap-файл на 2 ГБ:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Стримайте прагнення системи до swap:
sysctl -w vm.swappiness=10
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
Майте на увазі, що swap-файл займає місце на диску тарифу (40 ГБ на VDS-1), а запис до нього з'їдає пропускну здатність диска, див. Навантаження на диск.
Витік чи брак пам'яті
Графік пам'яті в панелі /hosting/vds/m/<id> на тижневому масштабі допомагає відрізнити одне від одного:
- Пила — зростає до стелі, падає під час перезапуску сервісу, знову зростає. Це витік у застосунку; вищий тариф лише відкладе проблему.
- Рівне плато біля стелі від самого початку — робочому набору просто бракує місця.
- Різке падіння — OOM killer убив процес; див. статтю Нестача пам'яті.
Перш ніж змінювати план, подбайте про очевидне: обмежте SystemMaxUse для журналу, задайте розумні ліміти для бази даних (MySQL за замовчуванням просить чимало), приберіть невикористовувані сервіси (systemctl list-units --type=service --state=running) і зменште кількість воркерів для PHP-FPM та Gunicorn.
Коли переходити на вищий тариф
Якщо після чистки available тижнями тримається біля нуля, swap постійно використовується, а застосунок потрібен загалом — беріть вищий тариф. Пам'ять зростає за рядом 2, 4, 8, 16, 24, 32 ГБ. Перехід можливий лише вгору, з доплатою за решту днів; переходу вниз немає: диск не зменшується. Докладніше див. статтю Зміна тарифу.
Поширені помилки
- Повне вимкнення swap. Під час сплеску система вб'є процес замість того, щоб протриматися хвилину.
- Swap розміром із диск. Машина не загине, але повзтиме годинами, а це гірше за швидке падіння.
- Погляд на
VIRTу htop. Віртуальний розмір для JVM, PostgreSQL і Node величезний і не відображає споживання. Дивіться наRES.
Перевіряти пам'ять потрібно до збою, а не після. Налаштуйте сповіщення за порогами — простий рецепт є в статті Сповіщення про недоступність сайту.