Skip to content
VDS · Моніторинг і продуктивність

Пам'ять і 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.

Перевіряти пам'ять потрібно до збою, а не після. Налаштуйте сповіщення за порогами — простий рецепт є в статті Сповіщення про недоступність сайту.