Діагностика високого навантаження на VPS
Використання htop, top і iotop-c для пошуку винного процесу
Коли ваш VPS починає «гальмувати» – SSH відповідає із затримкою, сайти завантажуються повільно, навіть введення в терміналі відбувається ривками – зазвичай це означає, що один або кілька системних ресурсів (CPU, RAM або диск I/O) використовуються на межі. Цей посібник проведе вас через практичний, покроковий процес виявлення проблеми та процесу-винуватця за допомогою трьох стандартних інструментів Linux: htop, top і iotop-c.
Аудиторія – системні адміністратори початківці, знайомі з командним рядком і базовими концепціями Linux.
Крок перший: Що таке «високе навантаження»?
Багато хто лякається, побачивши високі значення «load average», – але не всяке високе навантаження є поганим. Давайте уточнимо.
Що таке «load average»?
Load average показує, скільки процесів одночасно очікують CPU у поточний момент. Він відображається як три числа (за останні 1, 5 і 15 хвилин).
Приклад: uptime
Вивід:
17:41:25 up 2 days, 3:45, 1 user, load average: 2.34, 1.89, 1.42
Інтерпретація:
- 2.34 – середнє навантаження за 1 хвилину
- 1.89 – за останні 5 хвилин
- 1.42 – за останні 15 хвилин
Тепер порівняйте ці числа з кількістю ядер процесора. Якщо у вас 2 ядра:
- Навантаження близько 2.0 означає, що обидва ядра повністю завантажені – система зайнята, але працює нормально.
- Навантаження значно вище 2.0 (наприклад, 3 або 4) означає, що утворилася черга – занадто багато процесів чекають CPU.
Перевірте кількість ядер командою:
nproc
Якщо load average значно перевищує число ядер тривалий час – час розбиратися.
Крок другий: Швидкий огляд за допомогою htop
htop – найзручніший інструмент для візуального аналізу того, що відбувається в системі, у реальному часі.
Встановлення htop
Для встановлення використовуйте команду, що підходить для вашої системи:
sudo apt install htopдля Ubuntu/Debiansudo yum install htopдля CentOS/RHEL
Запуск
Запустіть команду htop. З'явиться кольоровий інтерфейс:

Розбір елементів інтерфейсу
- Верхні смуги показують завантаження CPU, пам'яті та свопу в реальному часі.
- Load average видно у правому верхньому куті.
- Список процесів показує, що запущено та скільки CPU і RAM використовує кожен процес.
Корисні клавіші
- Сортування за CPU: натисніть F6, потім виберіть "PERCENT_CPU"
- Сортування за пам'яттю: натисніть F6, виберіть "PERCENT_MEM"
- Деревовидний вигляд (показати батьківські/дочірні процеси): натисніть F5
- Завершити процес: виділіть його – натисніть F9 – виберіть сигнал (за замовчуванням 15, "terminate")
- Пошук процесу: натисніть F3, введіть частину імені (наприклад, "nginx")
На що звертати увагу
- Процеси з високим CPU% – вони займають процесорний час.
- Процеси з високим MEM% – займають багато RAM і можуть спричинити свопінг.
- Якщо процес постійно нагорі списку – можливо, це зациклений скрипт або служба, що постійно перезапускається.
Приклад
Запустивши htop, ви бачите таке:

Зверніть увагу, що процес msty-local-studio з PID 6346 завантажує CPU та пам'ять сильніше за інші. Отже, він потребує додаткової перевірки.
Крок третій: Перевірте результати за допомогою top
htop зручний, але top є на будь-якій Linux-системі. Це хороший інструмент на випадок, якщо встановлення додаткових пакетів неможливе.
Запуск
Запустіть top. Ви побачите інтерфейс утиліти:

Основні елементи
- Рядок %Cpu(s) показує, куди йде процесорний час:
- us – користувацькі процеси
- sy – системні/ядро
- wa – очікування операцій введення-виведення
- %wa понад 10–15% часто означає проблему з диском.
- У верхній частині відображаються load average і зведення щодо задач.
Корисні комбінації клавіш
- Shift + P – сортувати за CPU
- Shift + M – за пам'яттю
- Shift + T – за часом виконання
- 1 – показати завантаження кожного ядра
- k – завершити процес (потрібно ввести PID)
- q – вийти з
top
Коли використовувати top
Використовуйте top, якщо:
htopне встановлено (наприклад, у rescue-системі або контейнері).- Вам потрібен легкий засіб перегляду CPU-навантаження та I/O у реальному часі.
Крок четвертий: Якщо CPU і RAM у нормі – перевірте I/O через iotop-c
Іноді CPU та пам'ять виглядають нормально, але система сильно гальмує. Команди ls або cd зависають, а load average високий. Це класична ознака I/O wait – CPU простоює, очікуючи диска.
Встановлення iotop-c
Для встановлення використовуйте команду, що підходить для вашої системи:
sudo apt install iotop-cдля Ubuntu/Debiansudo yum install iotop-cдля CentOS/RHEL
Увімкніть моніторинг IO наступною командою:
sudo sysctl kernel.task_delayacct=1
Запуск
Запустіть з правами користувача root командою: sudo iotop-c. Ви побачите інтерфейс утиліти:

Інтерпретація
- Стовпець IO показує, скільки часу процес заблокований в очікуванні диска.
- Високий IO (наприклад, 90–100%) – процес сильно навантажує диск.
- Часто це резервне копіювання, імпорт даних або стиснення великих файлів.
Поширені причини перевантаження I/O
- База даних (
mysqld,postgres) виконує важкий запит. - Скрипти резервного копіювання (
rsync,tar,dd) копіюють багато даних. - Логи в
/var/logростуть неконтрольовано. - Неправильне налаштування swap – свопінг різко підвищує навантаження на диск.
Крок п'ятий: Співставте результати
Тепер, коли ви використали htop, top і iotop-c, пора подивитись на картину загалом.
| Симптом | Ймовірна причина | Інструмент |
|---|---|---|
| Завантажений CPU | Скрипт/процес перевантажує процесор | htop, top |
| Завантажена пам'ять | Витік пам'яті, надто багато воркерів | htop |
| Високий I/O wait | Активне використання диска, свопінг | iotop-c, top |
| Високий load при низькому CPU | Очікування диска або нестача пам'яті | top, iotop-c |
Також перевірте системні логи:
journalctl -xe
або:
tail -n 50 /var/log/syslog
Там можуть бути повідомлення про помилки ядра, помилки монтування або завершення процесів OOM-кілером.
Крок шостий: Прийміть заходи
Коли ви знайшли винний процес, пора вирішувати, що робити.
Перезапустити або зупинити процес
sudo systemctl restart <service>
або, якщо потрібно:
sudo kill -9 <pid>
Звільнити місце на диску
Якщо диск переповнений, використовуйте df -h, щоб подивитися зайняті розділи, або sudo du -sh /var/log/*, щоб знайти величезні логи.
Зменшити навантаження
- Налаштуйте cron так, щоб задачі не запускались одночасно.
- Оптимізуйте запити до бази даних або кешування.
- Зменшіть кількість воркерів у Nginx, Apache або Gunicorn.
Якщо нічого не допомагає – збільшіть ресурси
Якщо ви регулярно досягаєте межі ресурсів – додайте CPU, RAM або перейдіть на швидші диски (наприклад, SSD → NVMe).
Крок сьомий: Профілактика та постійний моніторинг
Щоб не перевіряти вручну навантаження щоразу, налаштуйте моніторинг та алерти за допомогою таких інструментів, як: glances, netdata, prometheus тощо.
Швидкі команди
| Мета | Команда |
|---|---|
| Показати load average | uptime |
| Переглянути CPU/RAM візуально | htop |
| Мінімальний перегляд процесів | top |
| Моніторинг активності диска | iotop-c |
| Перегляд логів | journalctl -xe |
Реальний приклад: проблемний скрипт резервного копіювання
Розглянемо реальний кейс.
Ситуація
- VPS із 2 ядрами CPU та SSD
- Раптово став дуже повільним – SSH гальмує, сайти не відповідають
uptimeпоказує: load average: 8.5, 7.3, 6.9 – занадто багато для 2 ядер.
Аналіз
htop: CPU завантажений лише на 10–15%. Пам'ять у нормі. Отже, проблема не в CPU.top: %wa = 40% – система зависає через I/O.iotop-c:
Готово – скрипт резервного копіювання стискає величезну директорію прямо на диску.
Рішення
- Зупинити або перенести виконання на ніч.
- Стискати у тимчасову директорію
/tmp(у пам'яті), а потім переносити. - Використовувати
ionice, щоб знизити пріоритет операції.
Результат
Продуктивність VPS миттєво повертається до норми.
Підсумки
Діагностика високого навантаження – це не магія. Це послідовна перевірка CPU, пам'яті та диска по черзі. Використовуйте інструменти як детектив:
- CPU перевантажений? –
htop,top - Пам'ять заповнена або йде свопінг? –
htop,top - Диск перевантажений? –
iotop-c - Перевірка логів? –
journalctl
Коли ви знаходите винний процес, вирішуйте: оптимізувати, завершити або перенести навантаження. З часом ви почнете розпізнавати закономірності – процес із високим навантаженням, занадто багато cron-завдань або неправильно налаштований веб-додаток. Завдяки цьому ви перестаєте «гасити пожежі» та починаєте керувати системою як справжній адміністратор.