Диагностика производительности Linux
Зачем эта статья
Когда хост или сервис тормозит, на машине уже есть встроенные средства — без установки агента и без доступа к исходникам приложения. Эта статья — практический runbook по SSH: что запустить, на что смотреть в выводе и куда копать дальше.
Постоянный мониторинг, алерты и baseline в Grafana — в 92 — мониторинг. Разбор конкретных инцидентов (сервис не отвечает, D-state, OOM) — в 9 — ошибки и логи. Справочник FHS, chmod и пакетные менеджеры — в 93. Базовые free, df, top — в напоминалке терминала.
Модель USE и порядок действий
Удобная схема для узкого места — USE (Brendan Gregg):
| Буква | Смысл | Вопрос |
|---|---|---|
| U | Utilization | Ресурс занят? (CPU %, %util диска) |
| S | Saturation | Есть очередь? (load, await, swap in/out) |
| E | Errors | Ошибки в ядре, SMART, сеть? |
Типичный порядок при жалобе «всё медленно» на одном сервере:
- Общая картина за несколько секунд —
vmstat,sarилиmpstat. - Диск —
iostat(высокийiowaitвvmstatчасто ведёт сюда). - Память —
/proc/meminfo, ростsi/soвvmstat. - Сеть и порты —
ss, при конфликте порта —lsof. - Сообщения ядра —
dmesg(OOM, I/O error). - Подозрительный процесс —
/proc/<pid>/status,perf,strace.
Установка утилит
| Пакет | Дистрибутив | Даёт |
|---|---|---|
sysstat | Debian/Ubuntu: apt install sysstat | sar, iostat, mpstat, pidstat |
sysstat | RHEL/Alma: dnf install sysstat | то же |
perf | linux-tools-common + метапакет ядра | perf top, perf record |
strace | обычно уже есть | трассировка syscall |
lsof | apt install lsof / в составе системы | открытые файлы и сокеты |
На Debian для sar по расписанию иногда нужно включить сбор: systemctl enable --now sysstat.
CPU
sar — срезы загрузки CPU
sar -u 1 5
Пять интервалов по одной секунде: удобно для скриптов и краткого снимка без интерактивного top. Смотрите %user, %system, %iowait (ожидание диска), `%steal (виртуализация).
История с прошлых дней (если включён sysstat):
sar -u -f /var/log/sysstat/saDD
mpstat и pidstat
По ядрам:
mpstat -P ALL 1 3
Кто грузит CPU:
pidstat -u 1 5
perf top — горячие функции процесса
perf top -p <pid>
Показывает стеки в реальном времени. Нужны права на трассировку (perf_event_paranoid, часто root). Для записи сессии — perf record -g -p <pid> и perf report (кратко также в 93).
| Симптом в CPU | Куда дальше |
|---|---|
Высокий %iowait | Диск |
| Один процесс 90 %+ | perf top -p, pidstat |
| Много потоков, умеренный CPU | /proc/<pid>/status, блокировки в приложении |
Память
/proc/meminfo — детали от ядра
grep -E 'MemTotal|MemFree|MemAvailable|Cached|Dirty|Swap' /proc/meminfo
MemAvailable — ориентир «сколько можно выделить без агрессивного свопа»; для быстрой оценки информативнее, чем только MemFree. Dirty — страницы, ещё не сброшенные на диск; рост при тяжёлой записи. Полный справочник полей — 51 — /proc.
vmstat — своп, контекстные переключения, очередь
vmstat 1 5 -S M
Ключевые колонки (зависит от версии, смотрите заголовок):
si/so— swap in/out; устойчивый поток при наличии RAM — признак давления на память.wa— ожидание I/O (аналог iowait).cs— context switches; резкий всплеск вместе с ростом latency — перегруз или борьба за CPU.
Память одного процесса
grep -E 'VmRSS|VmSwap|Threads' /proc/<pid>/status
VmRSS— резидентная память в RAM.VmSwap— сколько процесса ушло в swap.Threads— число потоков (утечки потоков иногда маскируются под «утечку памяти»).
Утечки и OOM в сценариях — 9 — память и OOM.
Диск
iostat — I/O и загрузка устройств
iostat -xz 1
Флаги:
-x— расширенные поля (await,r/s,w/s).-z— скрыть idle-устройства.1— интервал в секундах.
На что смотреть:
| Поле | Интерпретация |
|---|---|
%util | Близко к 100 % — устройство насыщено |
await | Среднее время операции (мс); рост при нормальной нагрузке — bottleneck |
avgqu-sz | Длина очереди к диску |
Высокий %util при малом throughput иногда указывает на мелкий random I/O или проблемный диск — сверка с dmesg и SMART (см. 9 — аппаратная диагностика).
Дополнительно по процессам — iotop (пакет iotop).
Сеть и порты
ss — listening-порты и процессы
ss -tulpn | grep LISTEN
Аудит «что слушает хост», поиск лишних сервисов. Таблица сетевых команд — 6 — справочник при сбоях.
lsof — кто занял порт
lsof -i :8080
Классический ответ на address already in use. По PID — lsof -p <pid>.
Пропускная способность и задержки канала — iftop, nethogs, iperf3 (в 6 и 9 — сценарий медленного сервиса).
Ядро — dmesg
dmesg -T | grep -E 'OOM|kill|error|I/O' | tail -20
Флаг -T — человекочитаемое время. Здесь же — OOM killer, ошибки диска, сбои драйверов. Для служб с journal — journalctl -k --since "1 hour ago".
dmesg фиксирует то, что сообщило ядро. Ошибки уровня HTTP, SQL или бизнес-логики ищите в journalctl -u … и файлах в /var/log/ — см. 9.
Отладка процесса без исходников
strace — системные вызовы
strace -p <pid> -e trace=network -T
-p— подключиться к работающему процессу.-e trace=network— только сетевые syscall (сокеты, connect, send).-T— время на каждый вызов.
Другие полезные фильтры: openat, read, write, futex. Вывод в файл: strace -o trace.log -f ./app.
strace и perf замедляют процесс. На боевом трафике сначала снимите метрики (pidstat, vmstat), затем краткую трассировку с ограничением по времени или на копии нагрузки в staging.
perf top — CPU hotspots
См. раздел CPU. Для Java/.NET есть свои инструменты (jstat, dotnet-counters) — в 9 — диагностика по приложению.
Сводная таблица команд
| Ресурс | Команда | Зачем |
|---|---|---|
| CPU | sar -u 1 5, mpstat -P ALL 1 | Загрузка, iowait |
| CPU (процесс) | perf top -p <pid> | Горячие функции |
| Память | grep … /proc/meminfo | Available, dirty, swap |
| Память (динамика) | vmstat 1 5 -S M | Swap, wait, cs |
| Память (процесс) | grep … /proc/<pid>/status | RSS, swap, threads |
| Диск | iostat -xz 1 | util, await, очередь |
| Сеть | ss -tulpn | Listening-порты |
| Порт | lsof -i :<port> | Конфликт порта |
| Ядро | dmesg -T + grep | OOM, I/O errors |
| Процесс | strace -p <pid> … | Зависания, сеть, файлы |
Когда CLI недостаточно
| Ситуация | Следующий шаг |
|---|---|
| Нужен тренд за неделю | 92 — метрики и мониторинг, Prometheus/node_exporter |
| Распределённая система | Трассировка (OpenTelemetry, Jaeger), correlation ID в логах — 9 — сценарий latency |
| Только один запрос тормозит | Логи приложения, профилировщик языка, БД (EXPLAIN, slow query) |
| Хост в облаке | Метрики провайдера + те же команды на ВМ |
Дальше
| Цель | Материал |
|---|---|
| Типовые инциденты и runbook | 9 |
Сеть, curl, tcpdump | 6 |
/proc, sysctl | 51 |
| Мониторинг и алерты | 92 |
| Права, systemd, пакеты | 93 |
| Чек-лист раздела | 99 |
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Администрирование как системная практика - управление доступами, обновлениями, резервным копированием и стабильностью IT-инфраструктуры. Установка ОС - это когда мы ставим её на чистый или отформатированный компьютер. Если аппаратное обеспечение — это тело инфраструктуры, то программное обеспечение — её нервная система. Без ПО железо остаётся набором нефункциональных компонентов. Система сохраняет видимость работоспособности, продолжает отвечать на базовые запросы и проходит поверхностные проверки, однако внутри накапливает критическую массу проблем, ведущих к внезапному коллапсу или глубокой деградации сервиса. Настройка и обслуживание серверов - развёртывание узла в инфраструктуре, базовая конфигурация и контроль стабильной эксплуатации. Групповые политики Windows - централизованное применение настроек в домене и управление конфигурацией рабочих станций. Конфигурация рабочих станций - настройка сетевых параметров, подключение к инфраструктуре и стандартизация клиентской среды. Сетевые подключения и диагностика — карта узлов, кроссплатформенный справочник команд (ping, ss, ipconfig, dig) и runbook при сбоях. Домашняя сеть: устройства, маршрутизатор, Wi‑Fi, общий доступ к файлам и принтерам, UNC-пути в проводнике Windows. Microsoft Entra ID (ранее Azure Active Directory) — облачный каталог идентичностей для Microsoft 365, Azure и тысяч SaaS по протоколу SSO. Windows Server — серверное семейство ОС на ядре Windows NT, предназначенное для корпоративной инфраструктуры: каталоги пользователей, файловые и веб-службы, виртуализация, контейнеры, сетевые роли. Проброс портов — это явное исключение из стандартного поведения NAT, которое блокирует все входящие соединения. Он не включается автоматически и требует ручной конфигурации.Администрирование
Установка и первоначальная настройка ОС
ИТ-инфраструктура
Сетевые аномалии и системные процессы
Настройка и обслуживание серверов
Групповые политики в Windows
Конфигурация рабочих станций
Сетевые подключения и диагностика
Организация домашней сети
Идентичность Microsoft Entra и RBAC
Windows Server — начало работы
NAT и проброс портов