Мониторинг нагрузки: установка и настройка 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).


Регистрация на 🏰 VDSina без номера телефона (через почту)
Как не попасть на деньги при посуточной оплате (баланс и блокировки)
Обзор панели управления: где что лежит
Выбор тарифа: на что влияют vCPU, RAM и SSD
Разница между VDS и обычным хостингом (на пальцах)
Как выбрать операционную систему для новичка: Ubuntu vs Debian vs AlmaLinux
Установка сервера в один клик: кнопка «Создать»
Что такое root-пароль и где его сохранить
Первый вход по SSH через командную строку Windows
Первый вход по SSH через PuTTY (простая инструкция)
Первый вход по SSH через Termius (для телефона и ПК)
Как обновить пароль root в панеле VDSina
Базовые команды Linux: ls, cd, sudo, apt update
Как проверить, сколько ресурсов жрет ваш сервер (htop, free -h)
Установка панели управления сервером (ISPmanager) за 5 минут
Установка бесплатной панели FastPanel от 🏰 VDSina (родная)
Установка панели HestiaCP (бесплатно и просто)
Настройка файрвола (UFW) чтобы не взломали в первый же час
Как открыть порты 80 и 443 для сайта
Установка LAMP (Linux, Apache, MySQL, PHP) одной командой
Установка LEMP (Nginx вместо Apache) одной командой
Как забросить сайт на WordPress через панель 🏰 VDSina (готовый шаблон)
Ручная установка WordPress на чистый сервер
Создание базы данных MySQL для сайта через командную строку
Как привязать домен к серверу (настройка A-записи)
Выпуск бесплатного SSL-сертификата от Let's Encrypt
Настройка cron (заданий по расписанию) на VDSina
Автоматическое резервное копирование (бэкапы) в панеле VDSina
Как восстановить сервер из бэкапа за 2 минуты
Настройка VPN на 🏰 VDSina (OpenVPN) для новичка
Настройка WireGuard на 🏰 VDSina (быстрее и проще)
Как проверить, не заблокирован ли ваш IP в РФ
Смена IP-адреса сервера в панеле 🏰 VDSina (если заблокировали)
Как привязать свой ISO-образ для установки Windows Server
Установка бота для Telegram на Python на VDSina
Как запустить бота в фоне (screen и systemd для чайников)
Мониторинг сервера через встроенные графики VDSina
Как не переплатить: выключение сервера при простое (посуточная оплата)
Повышение тарифа без перезагрузки сервера (горячий апгрейд)
Как настроить уведомления о падении сервера в Telegram
Безопасность: запрет входа под root через SSH
Создание нового пользователя с правами sudo
Защита от DDoS (включение защиты в панеле VDSina)
Подключение сетевых дисков (блочные устройства) для дополнительного места
Миграция сайта с другого хостинга на 🏰 VDSina (пошагово)
Как удалить сервер и не забыть отключить оплату
Где брать помощь: техподдержка VDSina, чаты и форумы
Бонус: установка игрового сервера Minecraft (для друзей)
Бесплатный курс: "VDSina для чайников: Сервер за 5 минут: Эффективно и быстро"
Бесплатный виджет обратной связи для JavaScript
Чатрулетка: новый способ общения
Что такое видеочат рулетка и зачем
Фототехника для пейзажей
Как выбрать лучший render хостинг для 3D рендеров с Eevee
Логистика с Excel: бесплатный курс учёта остатков и подбора транспорта
Онлайн генератор паролей для Windows
Онлайн Сплетница субтитры
Оптимизация обработки форм GEO проекта
Пасхалки в сериале Dexter: раскрытие тайн
Погода в Ревде вечером
Родительский портал Воронеж
Роллы, которые не требуют рекламы
SEO-принципы для нейросетевых разработчиков
Собери 10 пакетов перцев с теплицы
Создание мемов без фотошопа: простые приемы
Сравнение Arsys хостинг сервисов для блогеров с WordPress на 2023 год
VDSina для новичков: советы для начала
Весь экран под циферблат
Видеочат с минимальной задержкой
Виртуальная девушка ИИ
Вложения в компании
Введение в нейросети бесплатно
рейтинг хостингов 2026 Быстрые VDS серверы