Использование htop, top и iotop-c для поиска виновного процесса
Использование 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% – они занимают CPU время.
- Процессы с высоким MEM% – они занимают много RAM и могут вызвать свопинг.
- Если процесс постоянно вверху списка – возможно, это зацикленный скрипт или постоянно перезапускается служба.
Пример
Запустив htop, вы видите следующее:

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

Основные элементы
- Строка %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/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 | Скрипт/процесс перегружает 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 или неправильно настроенное веб-приложение. Благодаря этому вы перестаёте «тушить пожары» и начинаете управлять системой как настоящий администратор.