Діагностика високого навантаження на VPS | INTROSERV
EUR
european

EUR

usa

USD

Ukraine Ua
Ex. VAT Ex. VAT 0%

Діагностика високого навантаження на VPS

Використання htop, top і iotop-c для пошуку винного процесу

Коли ваш VPS починає «гальмувати» – SSH відповідає із затримкою, сайти завантажуються повільно, навіть введення в терміналі відбувається ривками – зазвичай це означає, що один або кілька системних ресурсів (CPU, RAM або диск I/O) використовуються на межі. Цей посібник проведе вас через практичний, покроковий процес виявлення проблеми та процесу-винуватця за допомогою трьох стандартних інструментів Linux: htop, top і iotop-c.

Info

Аудиторія – системні адміністратори початківці, знайомі з командним рядком і базовими концепціями 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/Debian
  • sudo yum install htop для CentOS/RHEL

Запуск

Запустіть команду htop. З'явиться кольоровий інтерфейс:

htop interface showing CPU bars, memory bars, and process list

Розбір елементів інтерфейсу

  • Верхні смуги показують завантаження CPU, пам'яті та свопу в реальному часі.
  • Load average видно у правому верхньому куті.
  • Список процесів показує, що запущено та скільки CPU і RAM використовує кожен процес.

Корисні клавіші

  • Сортування за CPU: натисніть F6, потім виберіть "PERCENT_CPU"
  • Сортування за пам'яттю: натисніть F6, виберіть "PERCENT_MEM"
  • Деревовидний вигляд (показати батьківські/дочірні процеси): натисніть F5
  • Завершити процес: виділіть його – натисніть F9 – виберіть сигнал (за замовчуванням 15, "terminate")
  • Пошук процесу: натисніть F3, введіть частину імені (наприклад, "nginx")

На що звертати увагу

  • Процеси з високим CPU% – вони займають процесорний час.
  • Процеси з високим MEM% – займають багато RAM і можуть спричинити свопінг.
  • Якщо процес постійно нагорі списку – можливо, це зациклений скрипт або служба, що постійно перезапускається.

Приклад

Запустивши htop, ви бачите таке:

htop showing msty-local-studio process at the top consuming high CPU and memory

Зверніть увагу, що процес msty-local-studio з PID 6346 завантажує CPU та пам'ять сильніше за інші. Отже, він потребує додаткової перевірки.

Крок третій: Перевірте результати за допомогою top

htop зручний, але top є на будь-якій Linux-системі. Це хороший інструмент на випадок, якщо встановлення додаткових пакетів неможливе.

Запуск

Запустіть top. Ви побачите інтерфейс утиліти:

top command interface showing system summary and process list

Основні елементи

  • Рядок %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/Debian
  • sudo yum install iotop-c для CentOS/RHEL

Увімкніть моніторинг IO наступною командою:

sudo sysctl kernel.task_delayacct=1

Запуск

Запустіть з правами користувача root командою: sudo iotop-c. Ви побачите інтерфейс утиліти:

iotop-c interface showing per-process disk I/O activity

Інтерпретація

  • Стовпець 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 ядер.

Аналіз

  1. htop: CPU завантажений лише на 10–15%. Пам'ять у нормі. Отже, проблема не в CPU.
  2. top: %wa = 40% – система зависає через I/O.
  3. iotop-c:
    iotop-c showing a backup script at the top with high I/O usage

    Готово – скрипт резервного копіювання стискає величезну директорію прямо на диску.

Рішення

  • Зупинити або перенести виконання на ніч.
  • Стискати у тимчасову директорію /tmp (у пам'яті), а потім переносити.
  • Використовувати ionice, щоб знизити пріоритет операції.

Результат

Продуктивність VPS миттєво повертається до норми.

Підсумки

Діагностика високого навантаження – це не магія. Це послідовна перевірка CPU, пам'яті та диска по черзі. Використовуйте інструменти як детектив:

  1. CPU перевантажений?htop, top
  2. Пам'ять заповнена або йде свопінг?htop, top
  3. Диск перевантажений?iotop-c
  4. Перевірка логів?journalctl

Коли ви знаходите винний процес, вирішуйте: оптимізувати, завершити або перенести навантаження. З часом ви почнете розпізнавати закономірності – процес із високим навантаженням, занадто багато cron-завдань або неправильно налаштований веб-додаток. Завдяки цьому ви перестаєте «гасити пожежі» та починаєте керувати системою як справжній адміністратор.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA