Сервер тормозит: методика
Вопрос
Тебе говорят: «прод тормозит», больше ничего. Как будешь разбираться на Linux-сервере?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Уточнить симптом и время: что медленно, с какого момента, что менялось (деплой, трафик)
Методика USE: для CPU, памяти, дисков и сети смотрю загрузку, очередь и ошибки
`uptime`, `vmstat 1`, `mpstat`: очередь CPU, своп, iowait, steal, перекос по ядрам
`iostat -xz`, `pidstat -d`: задержки дисков и кто пишет; `free`, `dmesg`: память и OOM
Нашёл процесс: `pidstat`, `strace -c`, `perf top`, лимиты в `/proc/<pid>/limits`
Сверяю с мониторингом и историей (`sar`), исправляю причину и фиксирую выводы
Что могут спросить следом
- Что сделаешь, если всё в норме, а медленно?
- Чем perf лучше strace на проде?
- Как понять, что виноват сосед по гипервизору?
Разбор
Сначала уточняю симптом: что именно медленно, с какого времени, что менялось: деплой, рост трафика, крон. Потом иду по методике USE по ресурсам. uptime: load и тренд. dmesg -T | tail: OOM killer, ошибки диска. vmstat 1: r больше ядер значит нехватка CPU, ненулевые si/so значит своп, высокий wa значит диск, st значит гипервизор. mpstat -P ALL: не упёрлось ли одно ядро. iostat -xz 1: await и очередь дисков, pidstat -d покажет, кто пишет. free -m: available, а не free. Найдя ресурс и процесс, смотрю внутрь: pidstat по потокам, strace -c для системных вызовов, perf top для горячих функций, лимиты дескрипторов. Если на хосте всё чисто, проблема дальше: база, внешнее API, сеть, и тогда иду по трейсам и метрикам приложения. В конце сверяю с историей sar и графиками, чтобы найти начало, и чиню причину, а не перезагружаю.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.