Как диагностировать проблемы с производительностью (vmstat, iostat, netstat)?

Диагностику производительности начинают с измерений: CPU, памяти, swap, дискового I/O, сети и конкретных процессов. vmstat показывает общую активность процессов, памяти, swap, I/O и CPU; iostat помогает найти проблемы с дисками; netstat показывает сетевые соединения и слушающие порты.
Подробный ответ

Общий порядок диагностики

Сначала нужно определить характер проблемы: высокая задержка, медленная база, нехватка CPU, memory pressure, swap, дисковая очередь или сеть. Затем собирают данные за период нагрузки и сопоставляют метрики приложения с метриками операционной системы.

vmstat

vmstat показывает процессы, память, swap, блоковый I/O и CPU. Удобно запускать его с интервалом.

vmstat 1 10
vmstat -S M 1 10

Важно смотреть на runnable processes, swap in/out, I/O и показатель wa, который отражает ожидание I/O. Постоянная активность swap часто говорит о нехватке памяти или неправильной нагрузке.

iostat

iostat показывает CPU- и дисковую I/O-статистику. На Ubuntu он обычно входит в пакет sysstat.

sudo apt install sysstat
iostat -x 1 10

В расширенной статистике полезно анализировать задержку I/O, очередь запросов и загрузку устройства. Высокие значения указывают, что диск или storage может быть узким местом.

netstat и ss

netstat показывает сетевые соединения, таблицы маршрутизации и слушающие порты. В современных Linux часто используют ss как более новую альтернативу.

netstat -tulpn
netstat -an
ss -tulpn
ss -s

Команда netstat -tulpn помогает понять, какой процесс слушает конкретный порт. Это полезно, если приложение не запускается из-за конфликта портов или нужно проверить, что сервис действительно принимает соединения.

Дополнительные команды

top
htop
free -h
uptime
loadavg
lsof -i :8000

Как ответить на собеседовании

Я начинаю с метрик и ищу узкое место: CPU, память, swap, диск или сеть. vmstat использую для общей картины процессов, памяти и I/O, iostat -x — для анализа дисков, а netstat или ss — для соединений и слушающих портов. Затем сопоставляю эти данные с логами и метриками приложения.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге