Определение и анализ нагрузки на Linux-системы
Введение
Для администраторов серверов критически важно уметь оперативно диагностировать причины повышенной нагрузки на систему. Понимание того, какие ресурсы исчерпаны и какие процессы создают нагрузку, позволяет принимать обоснованные решения: оптимизировать работу сервисов или масштабировать ресурсы.
В этой статье рассмотрим практические методы диагностики.
Ключевые утилиты для мониторинга
Базовый мониторинг системы
Утилита top одна из основных утилит для мониторинга системы и процессов в реальном времени в Linux/Unix-системах.
Чтобы запустить её, достаточно в терминале набрать команду top:
root@server:~# top
При запуске top экран делится на две основные части:
- Сводка системы (верхние строки):
- Первая строка:
-

- Текущее время.
- Время работы системы (uptime).
- Число пользователей (user).
- Load average (средняя нагрузка) за 1, 5 и 15 минут — ключевой показатель! Означает среднее количество процессов, ожидающих в очереди на выполнение. Правило: если значение больше количества ядер CPU — система перегружена (но для однопоточных приложений высокие значения могут быть нормой).
-
- Вторая строка:
-
Третья и четвертая строки (ЦПУ — %Cpu(s)):
-
us — пользовательские процессы.
-
sy — процессы ядра.
-
id — простой (idle). Низкий id (менее 10-20%) — признак высокой нагрузки на CPU.
-
wa — ожидание ввода-вывода (I/O wait). Высокий wa (более 5-10%) — указывает на "бутылочное горлышко" ввода-вывода (медленный диск, высокая сетевая активность).
-
hi, si — прерывания.
-
st — "виртуальному ЦПУ" не дали время (актуально для виртуальных машин).
-
Пятая и шестая строки (Память — KiB Mem / Swap):
-
Показывает использование оперативной (Mem) и swap-памяти.
-
Важно смотреть на доступную память (avail Mem) и использование swap (used Swap).
-
Активное использование swap при свободной оперативной памяти — нормально (ядро кэширует).
-
Активное использование swap при малой свободной RAM — признак нехватки памяти, система начинает "тормозить".
-
- Первая строка:
-
Таблица процессов (нижняя часть):
-
Список процессов, сортированный по умолчанию по убыванию нагрузки на ЦПУ.
-
PID — идентификатор процесса.
-
USER — владелец процесса.
-
PR / NI — приоритет (Priority / Nice).
-
VIRT — виртуальная память (вся память, включая своп и библиотеки).
-
RES — резидентная память (физическая RAM, используемая процессом). Показывает реальное потребление "оперативки".
-
SHR — разделяемая память (библиотеки и др.).
-
%CPU — загрузка ЦПУ процессом.
-
%MEM — доля физической памяти, используемая процессом.
-
TIME+ — общее время работы процесса на ЦПУ.
-
COMMAND — имя команды.
-
На что обратить внимание при нагрузке (поиск проблем)
- Load average: Сравнить с числом ядер CPU (lscpu или нажмите 1 в top).
- %CPU idle (id): Если близок к 0% — процессор загружен полностью.
- I/O wait (wa): Высокое значение — система ждет медленного диска/сети.
- Процессы-зомби (zombie): Много зомби — ошибка в программе.
- Память: Мало avail Mem и растет used Swap — нехватка RAM.
- В таблице процессов: Искать процессы с высокими значениями %CPU, %MEM или RES. Это "виновники" нагрузки.
Основные клавиши управления (интерактивные команды)
- Сортировка и поиск:
- P (по умолчанию) — сортировка по использованию ЦПУ (%CPU).
- M — сортировка по использованию памяти (%MEM).
- N — сортировка по PID (номеру процесса).
- T — сортировка по времени работы (TIME+).
- R — обратный порядок сортировки (toggle).
- L или & — поиск по имени процесса. Вводите строку.
-
Отображение информации:
-
1 (цифра) — показать нагрузку на каждое ядро ЦПУ отдельно.
-
t — переключить отображение строк CPU (график/текст/скрыть).
-
m — переключить отображение строк памяти (график/текст/скрыть).
-
u — показать процессы только конкретного пользователя. Введите имя.
-
Shift + H — показать/скрыть потоки (threads). Важно для многопоточных приложений.
-
c — показать полную команду с аргументами.
-
Shift + V — включить древовидный режим отображения иерархии процессов.
-
x или y — подсветка столбца сортировки и активного процесса.
-
-
Управление процессами:
-
k — убить (kill) процесс. Запросит PID и сигнал (по умолчанию 15 — SIGTERM, "вежливое" завер
-




