#server-slow-where-start
Звонят: «прод медленный». Какие первые 5 команд?
Что отвечать
`uptime` - load average и время аптайма (только что ребутался?). `top -bn1 | head -20` - кто жрёт CPU прямо сейчас. `vmstat 1 5` - CPU/IO/swap по тикам. `dmesg --since "1 hour ago"` - OOM, kernel-ошибки, выкинутый диск. `df -h && df -i` - место и inode'ы. Это даёт картину «процесс/память/диск» за 30 секунд, дальше уже целевая диагностика.
Что хотят услышать
Senior должен: - назвать порядок «снизу вверх»: сначала ресурсы (CPU/RAM/IO/disk), потом сетевые connections, потом application - упомянуть USE method (Brendan Gregg): для каждого ресурса - Utilization, Saturation, Errors - сказать что `top` показывает мгновенный снимок, для тренда нужны Prometheus/Grafana, для прошлого - `sar` (sysstat) - назвать `ss -s` для summary connections, `iostat -x 1 5` для дисков - не лезть сразу в strace/perf - это инструменты второго эшелона, когда первые пять команд уже сузили область
Подводные камни
- ✗ Сразу запускать tcpdump или strace - слишком узко без контекста
- ✗ Не проверить `dmesg` - там часто прямой ответ (OOM, hardware error)
- ✗ Забыть `df -i` - inode-exhaustion даёт «no space» при свободном месте
Follow-up
- ? Что покажет `vmstat 1 10` и какие колонки самые важные?
- ? Чем USE-method отличается от RED-method?
- ? Где смотреть тренд за последние сутки если Prometheus не было?
Глубина в базе знаний