uptime, top или htop, ps и, при наличии, pidstat. Сопоставьте Load average, категории CPU, состояние задач, память, владельца, родительский процесс и принадлежность к службе. Управляемую системную службу обычно останавливают или перезапускают через systemctl; самостоятельному процессу сначала посылают SIGTERM, затем проверяют, что завершился именно нужный экземпляр, и только в крайнем случае используют SIGKILL.До сбора данных не перезапускайте службу и не отправляйте SIGKILL
Первичный снимок: что собрать при высокой нагрузке
Высокая нагрузка CPU Linux, зависание процесса и медленная работа сервера имеют разные причины. Начните с текущей картины, а не с одного показателя. Утилиты htop, pidstat, iostat и lsof могут отсутствовать в минимальной установке: htop обычно поставляется одноимённым пакетом, pidstat и iostat — пакетом sysstat, lsof — одноимённым пакетом. Названия пакетов, репозитории и способ установки различаются между дистрибутивами; устанавливайте их по правилам целевой ОС, например через APT в Ubuntu и Debian или DNF и YUM.
Соберите данные до воздействия на процесс
Команды чтения обычно доступны обычному пользователю, но подробности о чужих процессах и открытых файлах могут требовать прав суперпользователя. Сохраняйте вывод в защищённый каталог: в аргументах команд могут оказаться чувствительные данные.
- 1Зафи ксируйте время и общую нагрузкуЗапишите время наблюдения и вывод
uptime. Он показывает значения load average за 1, 5 и 15 минут и число вошедших пользователей. - 2Посмотрите CPU, память и задачиЗапустите
top; при наличииhtopиспользуйте его как интерактивное представление процессов. Зафиксируйте верхнюю строку нагрузки, сводку CPU, число задач по состояниям и строки проблемных процессов. - 3Получите сортируемый список процессовВыведите PID, PPID, владельца, состояние, время запуска, CPU, память и команду через
ps. Это помогает сохранить данные и сопоставить процесс с родителем или службой. - 4Проверьте динамику при наличии pidstatЕсли доступен
pidstat, снимите несколько интервалов. Один короткий пик CPU не равен постоянной перегрузке; динамический вывод позволяет увидеть повторяющиеся процессы и потоки.
uptimetopps -ww -eo pid,ppid,user,lstart,stat,%cpu,%mem,cmd --sort=-%cpupidstat -u -r -d -p ALL 1 5Что означают проценты в top и ps
top строка %Cpu(s) обычно делит учтённое время CPU на user, system, nice, idle, iowait, irq, softirq, steal и другие категории. В ps поле %CPU — расчётная доля времени CPU, а не мгновенная аппаратная загрузка. Сравнивайте несколько наблюдений, а не одну строку.Высокий load average при невысоком CPU
Load average — экспоненциально сглаженное среднее числа задач, которые выполняются или готовы выполняться на CPU, а также задач в непрерываемом ожидании. Три числа в uptime и top имеют горизонты сглаживания 1, 5 и 15 минут. Это не арифметические средние по трём конечным окнам: более старые наблюдения постепенно теряют вес. Короткое значение быстрее реагирует на изменение, длинное показывает устойчивую тенденцию. Load average — не процент CPU и не число «занятых ядер».
Как читать изменение load average
| Наблюдение | Что может означать | Что проверить |
|---|---|---|
| 1 минута заметно выше 5 и 15 минут | Недавний или продолжающийся всплеск очереди задач | Процессы с CPU, состояние R, задания по расписанию, начало интенсивного I/O |
| 1, 5 и 15 минут высоки и близки | Длительная очередь выполнения или ожидания | Динамику CPU, задачи D, ограничения cgroup, хранение и прикладную нагрузку |
| 15 минут выше 5 и 1 минуты | Нагрузка могла уменьшиться, но сглаженное среднее ещё отражает прошлый период | Текущий top, недавние изменения и историю мониторинга |
| Load высокий, idle CPU остаётся заметным | В очереди могут быть задачи в непрерываемом ожидании, либо нагрузка ограничена не всеми CPU | Состояния задач, iowait, доступные CPU и cgroup |
Сопоставление load с числом процессоров полезно только в контексте. У виртуальной машины или контейнера может быть ограничен набор доступных CPU, а cgroup может ограничивать CPU quota или affinity. Кроме того, высокий load создают не только готовые к вычислению задачи, но и задачи в непрерываемом ожидании. Поэтому правило «load должен быть ниже числа ядер» не является самостояте льным диагнозом.
CPU-bound или ожидание ввода-вывода: роль iowait
iowait — категория учёта времени CPU: обычно это время, когда конкретный CPU простаивал при наличии незавершённых операций ввода-вывода. Это не счётчик одного процесса, не измерение задержки диска и не доказательство неисправности накопителя. Особенности расчёта зависят от ядра, а на многопроцессорных системах агрегированный процент особенно важно читать вместе с состояниями задач и фактической активностью I/O.
| Признак | Вероятная ветка | Проверка до исправления |
|---|---|---|
Высокие us или sy, процессы стабильно используют CPU, есть R | CPU-bound: вычисления в пользовательском коде или ядре | top, ps --sort=-%cpu, pidstat -u; сопоставить команду, владельца и время запуска |
Значимый wa, много задач D, CPU не занят вычислениями | Ожидание I/O или иной путь непрерываемого ожидания | ps по состоянию, pidstat -d; при наличии — iostat; далее проверять соответствующую подсистему |
| Load высок, iowait низок, CPU тоже не полностью занят | Ожидание может быть не отражено одним iowait; возможны cgroup, блокировки, особенности нагрузки | Состояния задач, доступные CPU, cgroup и метрики приложения |
ps -eo pid,ppid,user,stat,wchan:32,%cpu,%mem,cmd --sort=statiostat -xz 1 3Когда переходить к диагностике хранилища
D, рост iowait или аномалии метрик устройств, зафиксируйте PID, команды, точки монтирования и время симптома. Дальнейший поиск причин медленного I/O на уровне файловой системы, RAID, SAN/NAS или сети требует отдельной диагностики соответствующей подсистемы.Как посмотреть процессы Linux и распознать состояние задачи
Процесс имеет PID, владельца, родительский PID и связанные ресурсы. В top, htop и ps сначала найдите строку по CPU, памяти или состоянию, затем уточните полную команду, PPID, время старта и принадлежность к службе. htop удобен деревом процессов и интерактивной сортировкой, но его набор колонок и горячих клавиш настраивается и зависит от версии.
Основные состояния в полях `STAT` утилиты `ps` и `S` утилиты `top`
| Состояние |
|---|
