Мониторинг нагрузки: установка и настройка htop и iotop
Дата публикации: 24.04.2026

Мониторинг нагрузки: установка и настройка htop и iotop

ccb9a536


Мониторинг нагрузки: как установить и настроить htop и iotop для контроля сервера

Вы когда-нибудь чувствовали, что ваш сервер "тормозит", но не понимали, что именно его нагружает? Или внезапно сайт переставал отвечать, а хостинг-провайдер писал: "У вас высокая нагрузка на CPU/Disk — оптимизируйте"?

Проблема в том, что стандартные инструменты Linux (например, top) показывают данные слишком скупо. Они не дают полной картины: какие конкретно процессы жрут ресурсы, кто блокирует диск, почему сервер "задыхается" при пиковых нагрузках.

В этом уроке вы научитесь: ✅ Устанавливать htop и iotop — продвинутые утилиты для мониторинга CPU, памяти и дисковой активности. ✅ Читать их вывод как открытую книгу: понимать, какие процессы опасны, а какие — норма. ✅ Быстро находить и убивать "прожорливые" задачи, чтобы сервер не упал в критический момент. ✅ Настраивать утилиты под свои нужды (цвета, сортировка, фильтры).

Это как рентген для вашего сервера — вы увидите все внутренние проблемы до того, как они приведут к простою.


1. Почему top — это прошлый век, а htop и iotop — будущее

Давайте начнем с аналогии. Представьте, что ваш сервер — это ресторан:

  • top — как меню без цен и описаний: вы видите список блюд (процессов), но не понимаете, какое из них съедает весь бюджет (ресурсы).
  • htop — это детализированное меню с калорийностью, временем приготовления и отзывами. Вы сразу видите, какой процесс "жирный" и почему.
  • iotop — это камеры на кухне, которые показывают, кто именно занимает все плиты (дисковые операции) и мешает другим блюдам (процессам) готовиться.
Утилита Что показывает Почему лучше top
htop CPU, память, процессы (с деревом) Интерактивный интерфейс, цвета, сортировка, убивание процессов без kill
iotop Нагрузка на диск (чтение/запись) Видит, какой именно процесс блокирует диск (например, тяжелый SQL-запрос или бэкап)

Вывод: Если вы администрируете сервер (особенно для арбитража или высоконагруженных сайтов), htop и iotop должны быть у вас под рукой всегда.


2. Установка htop и iotop на сервер

2.1. Установка на Debian/Ubuntu

Откройте терминал и выполните:

sudo apt update && sudo apt install htop iotop -y

2.2. Установка на CentOS/RHEL

sudo yum install epel-release -y  # Подключаем репозиторий EPEL
sudo yum install htop iotop -y

2.3. Проверка установки

Запустите утилиты:

htop
iotop

Если видите цветной интерфейс — всё работает!

Внимание! Для iotop нужны права суперпользователя (sudo). Если запускаете без sudo, увидите ошибку:

iotop: error: Linux kernel >= 2.6.20 required!

Решение: всегда запускайте как sudo iotop.


3. Разбор htop: как читать и управлять процессами

3.1. Интерфейс htop: что где находится

Когда вы запускаете htop, вы видите 4 ключевые зоны:

  1. Верхняя панель (системная статистика)

    • CPU: Графики загрузки ядер (зеленый — пользовательские процессы, красный — системные, синий — низкоприоритетные).
    • Mem: Использование оперативной памяти (желтый — кеш, зеленый — буферы).
    • Swp: Использование swap (если это значение растет — серверу не хватает RAM!).
  2. Список процессов

    • PID: Идентификатор процесса.
    • USER: Пользователь, от имени которого запущен процесс.
    • PRI: Приоритет (чем меньше число, тем выше приоритет).
    • NI: "Nice value" (от -20 до 19; чем ниже, тем выше приоритет).
    • VIRT: Виртуальная память, которую процесс занимает.
    • RES: Реальное использование RAM.
    • CPU% и MEM%: Процент загрузки CPU и памяти.
    • TIME+: Время работы процесса.
    • Command: Команда, которой процесс был запущен.
  3. Нижняя панель (горячие клавиши)

    • F1 — помощь.
    • F2 — настройка (о ней поговорим позже).
    • F3 — поиск процесса.
    • F4 — фильтр процессов.
    • F5 — дерево процессов (показывает иерархию).
    • F6 — сортировка (по CPU, памяти и т.д.).
    • F9 — убить процесс (kill).
    • F10 — выход.

3.2. Практические примеры: что делать, если сервер тормозит

Сценарий 1: Высокая нагрузка на CPU

  1. Запустите htop.
  2. Нажмите F6 → выберите сортировку по CPU%.
  3. Сверху окажутся процессы, которые больше всего грузят процессор.
  4. Если видите незнакомый процесс (например, minerd или kworker), это может быть майнинг-бот или DDOS-атака.
  5. Выделите процесс стрелками → F9 → выберите сигнал (SIGTERM или SIGKILL).

Важно! Не убивайте процессы наугад. Например, nginx или mysql — критичные для работы сайта. Сначала проверьте, почему они грузят CPU (возможно, это норма при высокой посещаемости).

Сценарий 2: Не хватает памяти (OOM Killer активируется)

Если в верхней панели Mem заполнен на 100% и растет Swp:

  1. Отсортируйте процессы по MEM%.
  2. Найдите те, что жрут больше всего RAM (например, php-fpm или node).
  3. Проверьте, не утечка ли это памяти (если процесс со временем только растет).
  4. Решения:
    • Перезапустите процесс (systemctl restart php-fpm).
    • Увеличьте память сервера.
    • Оптимизируйте код (например, уменьшите лимиты памяти в PHP).

Сценарий 3: Подозрительные процессы (взлом?)

Если видите незнакомые процессы (например, /tmp/.x/miner):

  1. Загуглите название процесса.
  2. Проверьте, от какого пользователя он запущен (USER).
  3. Убейте процесс (F9), затем проверьте сервер на вирусы (rkhunter, chkrootkit).

4. Разбор iotop: кто блокирует ваш диск?

iotop показывает, какие процессы активно читают/пишут на диск. Это критично для:

  • Серверов с SSD (у них ограничен ресурс записей).
  • Баз данных (например, MySQL может "зависнуть" из-за тяжелых запросов).
  • Арбитражных серверов (если скрипты постоянно пишут логи).

4.1. Как читать вывод iotop

Запустите:

sudo iotop -o  # Флаг `-o` показывает только активные процессы
Столбец Что означает
TID ID потока (thread).
PRIO Приоритет ввода-вывода.
USER Пользователь.
DISK READ Скорость чтения с диска (Kb/s).
DISK WRITE Скорость записи на диск (Kb/s).
SWAPIN Использование swap (если не 0 — плохо!).
IO% Процент загрузки диска процессом.
COMMAND Команда процесса.

4.2. Типичные проблемы и решения

Проблема 1: Процесс постоянно пишет на диск (например, mysqld)

  • Причина: Тяжелые SQL-запросы, отсутствие индексов, большие транзакции.
  • Решение:
    • Проверьте медленные запросы в MySQL (SHOW FULL PROCESSLIST;).
    • Оптимизируйте базу (добавьте индексы, разбейте большие таблицы).

Проблема 2: updatedb или locate грузят диск

  • Причина: Система обновляет базу данных для команды locate (ищет файлы).
  • Решение:
    • Отключите автоматическое обновление: sudo systemctl disable mlocate.
    • Или перенесите задачу на ночное время (cron).

Проблема 3: Неизвестный процесс пишет в /tmp

  • Причина: Возможно, это вредоносное ПО (например, ботнет).
  • Решение:
    • Убейте процесс (kill -9 PID).
    • Проверьте /tmp на подозрительные файлы (ls -la /tmp).

Проблема 4: Высокая нагрузка от flush (MySQL)

  • Причина: MySQL сбрасывает данные на диск (например, при большом количестве изменений).
  • Решение:
    • Увеличьте innodb_buffer_pool_size в my.cnf.
    • Настройте innodb_flush_log_at_trx_commit=2 (но это снизит надежность).

5. Настройка htop под себя

htop позволяет кастомизировать отображение. Запустите настройку:

htop → F2 (Setup)

5.1. Полезные настройки

Опция Зачем нужна Рекомендация
Цвета Выделение важных процессов. Красный — высокий CPU, желтый — высокая память.
Столбцы Добавление/удаление информации. Добавьте IO_RATE (ввод-вывод).
Порядок сортировки Быстрый доступ к критичным процессам. По умолчанию — по CPU%.
Дерево процессов Видеть иерархию (родитель → дочерние). Включите в Display options.

5.2. Сохранение настроек

После изменений нажмите F10 → выберите "Save setup to ~/.config/htop/htoprc".


6. Автоматизация мониторинга: логирование и оповещения

Чтобы не сидеть постоянно в терминале, настройте автоматическое логирование и оповещения.

6.1. Логирование htop в файл

htop --delay=10 > htop_log.txt  # Записывает данные каждые 10 секунд

Чтобы остановить — Ctrl+C.

6.2. Оповещения при высокой нагрузке

Используйте cron + скрипт на Bash. Пример скрипта (/usr/local/bin/check_load.sh):

#!/bin/bash
THRESHOLD=90  # Порог загрузки CPU (%)
LOAD=$(uptime | awk -F'load average: ' '{print $2}' | awk '{print $1}' | cut -d. -f1)

if [ "$LOAD" -gt "$THRESHOLD" ]; then
    echo "High CPU load: $LOAD%" | mail -s "ALERT: High CPU on $(hostname)" admin@example.com
fi

Сделайте скрипт исполняемым:

chmod +x /usr/local/bin/check_load.sh

Добавьте в cron (каждые 5 минут):

crontab -e

Добавьте строку:

*/5 * * * * /usr/local/bin/check_load.sh

Практика для закрепления

Упражнение 1: Анализ текущей нагрузки

  1. Запустите htop.
  2. Отсортируйте процессы по:
    • Загрузке CPU (F6PERCENT_CPU).
    • Использованию памяти (F6PERCENT_MEM).
  3. Найдите топ-3 процессов по каждому критерию. Это нормальные процессы или что-то подозрительное?

Упражнение 2: Поиск дисковой активности

  1. Запустите sudo iotop -o.
  2. Посмотрите, какие процессы активно пишут/читают с диска.
  3. Если есть процесс с высоким DISK WRITE (например, mysqld), проверьте, не является ли это проблемой (например, отсутствием индексов в базе).

Упражнение 3: Настройка htop

  1. Запустите htopF2.
  2. Добавьте столбец IO_RATE (ввод-вывод).
  3. Измените цвет процесса с высоким CPU на красный.
  4. Сохраните настройки.

Упражнение 4: Убийство процесса

  1. Запустите в другом терминале тяжелую команду (например, stress --cpu 2).
  2. В htop найдите этот процесс.
  3. Убейте его (F9SIGTERM).
  4. Проверьте, исчез ли он из списка.

Упражнение 5: Автоматизация

  1. Создайте скрипт, который проверяет загрузку CPU и отправляет email, если она превышает 80% (как в разделе 6.2).
  2. Настройте его выполнение через cron каждые 10 минут.

Итоги урока

  • htop — ваш главный инструмент для мониторинга CPU и памяти. Умейте читать его вывод и убивать проблемные процессы.
  • iotop — показывает, кто грузит диск. Особенно полезен для баз данных и серверов с SSD.
  • Настройка под себя экономит время: цвета, сортировка, логирование.
  • Автоматизация спасает от простоя: настройте оповещения, чтобы узнавать о проблемах до того, как сервер ляжет.

Домашнее задание:

  1. Установите htop и iotop на свой сервер.
  2. Проанализируйте текущую нагрузку (есть ли аномалии?).
  3. Настройте htop под себя (цвета, столбцы).
  4. Создайте скрипт для мониторинга CPU и добавьте его в cron.

Если остались вопросы — задавайте! В следующем уроке разберем, как настроить автоматическое убивание процессов при превышении лимитов (с помощью systemd и cgroups).


Генератор паролей с длинной 64 символа
Женская одежда с бахромой
Кадастровые работы в Бийске
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать планировку сайта для блогов на DreamHost
Как выбрать Vdsina вечный хостинг для своего проекта
Казань окна VEKA - профессионализм и опыт
Курьерская вода
Новостройки Оренбурга: недвижимость с отличной ценой
Онлайн чат-партнерство
Пиломатериалы для возведения бани
Почему VDSina — лучший выбор хостинга
Секреты Вконтакте: тонкости и хитрости
Скидки до 50% на тур в Коста-Рике
Видеочат рулетка бесплатно
рейтинг хостингов 2026 Быстрые VDS серверы