EUR
european

EUR

usa

USD

Russian Ru
Ex. VAT Ex. VAT 0%

Использование htop, top и iotop-c для поиска виновного процесса

Использование 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% – они занимают 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) показывает, куда уходит CPU-время:
    • 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 Скрипт/процесс перегружает 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