Привет, Хабр!
Меня зовут Андрей Бирюков. Я — независимый эксперт в области ИТ и ИБ, преподаю в учебных центрах и пишу статьи и книги.
Начинающих сисадминов часто вгоняет в ступор ситуация, когда сервер что называется, еле дышит. То есть, команды выполняются с задержкой, сайт открывается вечность, а коллеги постоянно спрашивают, «что случилось?». Давайте разберемся, как быстро и эффективно провести первичную диагностику Linux‑сервера.
Четыре главных подозреваемых
Прежде чем хвататься за сложные инструменты, запомните главное правило: медленная работа сервера почти всегда связана с одним из четырех ресурсов:
Процессор (CPU). — слишком много процессов борются за вычислительные мощности
Оперативная память (RAM). — нехватка памяти приводит к использованию swap (дискового кеша)
Дисковая система (I/O). — медленные операции чтения/записи тормозят всё
Сеть. — перегрузка канала или проблемы с сетевыми настройками
Неопытный администратор часто начинает паниковать и перезагружать сервер. Перезагрузка, это хотя и эффективная, но все‑таки крайняя мера. Давайте научимся понимать, что именно происходит. Просто перезагрузив сервер мы на время решим проблему, но так и не узнаем ее причины и через какое‑то время она обязательно повториться.
Первый шаг: команда top и её ближайшие родственники
Для начала давайте посмотрим, какие процессы сейчас работают и какие ресурсы они потребляют. Здесь top — ваш главный помощник.
Запустите top. Вы увидите примерно такую картину:

На что здесь нужно обращать внимание в первую очередь:
load average. (средняя загрузка) — три числа за 1, 5 и 15 минут. Если эти числа превышают количество ядер процессора, система перегружена
Cpu(s). — если us (user) + sy (system) постоянно > 80–90%, процессор работает на пределе
wa (iowait). — если этот показатель высокий (более 10–20%), проблемы с диском
PID с высоким%CPU. — найдите процесс‑виновник
Важно: load average показывает количество процессов, ожидающих процессор. На 4-ядерном сервере значение 4.0 означает 100% загрузку всех ядер.
Здесь также поможет htop — улучшенная версия top.
htop показывает:
Визуальную загрузку каждого ядра процессора
Использование памяти в цвете
Дерево процессов
Возможность завершить процесс без ввода PID

Второй шаг: диагностика памяти
Теперь давайте займемся диагностикой памяти и в этом нам помогут утилиты free и vmstat.
Запустите free -h:

Здесь о наличии проблем могут говорить следующие красные флаги:
free почти на нуле, а available меньше 10% от общей памяти
Swap используется активно (более 100–200 МБ)
Более детально посмотрим через vmstat 2 5 (5 измерений с интервалом 2 секунды):

Обратите внимание на следующее:
si/so. (swap in/out) — если эти значения постоянно > 0, памяти критически не хватает
r. (running) — количество процессов в очереди на выполнение (не должно превышать количество ядер * 2)
Третий шаг: диагностика диска
Далее смотрим потребление ресурсов жестким диском. Для этого нам потребуется утилита iotop. Она показывает, какие процессы активно читают/пишут данные на диск:
sudo iotop -o

Флаг ‑o показывает только активные процессы.
На что смотреть:
Высокие значения в колонках DISK READ и DISK WRITE
Процессы с большим%IO
Также для диагностики интересна общая статистика диска, которую можно получить с помощью iostat.
sudo iostat -x 1 5

Здесь важные показатели:
util. — загрузка диска в процентах. Если > 80–90% — диск перегружен
await. — среднее время ожидания запроса (в мс). Если > 20–30 мс — диск медленный
r/s и w/s. — количество операций чтения/записи в секунду
Четвертый шаг: системная статистика с sysstat
Здесь нам сначала потребуется установить пакет sysstat:
sudo apt install sysstat Ubuntu/Debian
sudo yum install sysstat CentOS/RHEL
Далее для сбора статистики с зданным интервалом мы можем применить sar. Посмотреть историю загрузки процессора за сегодня можно следующим образом:
sar -u

Загрузку памяти:
sar -r
А дисковую активность:
sar -b
Главное преимущество sar — вы можете посмотреть, что происходило час назад, даже если не сидели в консоли.
Алгоритм диагностики: пошаговый план
Мы рассмотрели базовые инструменты, которые потребуются нам для работы. Теперь давайте поговорим об основных действиях, которые необходимо выполнить для успешной диагностики проблемы.
Итак, когда сервер тормозит, действуйте по этой схеме:
Шаг 1. Быстрый осмотр
top
Смотрим load average и загрузку CPU. Если high — проблема в процессоре. Иначе идем дальше.
Шаг 2. Проверка памяти
free -h
Если используется swap — переходим к поиску процесса с большой утечкой памяти.
Шаг 3. Проверка диска
iostat -x 1 2
Если%util > 80% или wa в top высокий — проблемы с диском.
Шаг 4. Поиск виновника
htop или top, отсортированный по%CPU
sudo iotop -o
После такого алгоритма полезно проверить себя на практике. Короткий тест по базовому администрированию Linux поможет понять текущий уровень и заметить темы, которые стоит подтянуть.
Типовые проблемы и их решения
Теперь давайте рассмотрим несколько типовых проблем и способы их решения.
Ситуация 1: Процессор перегружен одним процессом
Симптомы:
Один процесс в top занимает 80–100% CPU
Сервер работает медленно, но память свободна
Решение:
Определите процесс (например, php‑fpm, mysql, node)
Проверьте логи этого приложения
Если это веб‑сервер — посмотрите логи доступа, возможно, DDoS‑атака
Если это база данных — проверьте медленные запросы
Ситуация 2: Нехватка памяти
Симптомы:
свободной памяти нет
активно используется swap (si/so > 0 в vmstat)
сервер «задумывается» при открытии новых приложений
Решение:
Найдите процесс‑пожиратель:
ps aux --sort=-%mem | head -10Проверьте, нет ли утечки памяти (например, в PHP‑скриптах)
Увеличьте объем RAM или настройте swap правильно
Перезапустите проблемный сервис (временное решение)
Ситуация 3: Диск тормозит
Симптомы:
Высокий%util и await в iostat
Большое значение wa в top
Приложения, активно работающие с БД, тормозят
Решение:
Проверьте, какие процессы пишут/читают:
sudo iotop -oПосмотрите логи на предмет ошибок (dmesg, системные логи)
Проверьте файловую систему:
df -h(нет ли переполнения?)Возможно, проблема в RAID или физическом диске
Практический пример разбора
Ну и в завершении давайте рассмотрим небольшой пример: сервер с веб‑приложением стал тормозить.
1. Запускаем top:
|
load average: 8.15, 6.87, 4.42 CPU: 45% us, 25% sy, 30% wa |
Видим: нагрузка высокая (8 на 4-ядерном сервере), высокий iowait (30%).
2. Проверяем память:
|
free ‑h Mem: 7.7G total, 6.1G used, 1.3G buff/cache, 324M free Swap: 2.0G total, 1.8G used, 200M free |
Swap используется достаточно активно, это говорит о нехватке памяти.
3. Проверяем диски:
|
iostat ‑x 1 util: 95% await: 45ms |
Как видим, диск перегружен.
4. Находим виновника:
sudo iotop -o
Утилита показывает, что процесс mysqld пишет 50 МБ/с на диск. Вывод: MySQL выполняет тяжелые запросы, не хватает памяти, сервер начинает использовать swap (который тоже на диске), что еще сильнее нагружает диск.
Решения:
Добавить больше RAM
Настроить MySQL (увеличить кеш, оптимизировать запросы)
Если проблема повторяется — перевести базу на отдельный сервер
Заключение
Диагностика Linux‑сервера — это навык, который приходит с практикой. Начните с этих простых шагов:
Всегда начинайте с
topилиhtopПроверяйте все четыре ресурса по порядку: CPU → RAM → DISK → NETWORK
Используйте специализированные инструменты для углубленного анализа
Запоминайте типовые паттерны проблем
Помните главное: паника и перезагрузка — последнее, что нужно делать Систематический подход и знание базовых инструментов помогут вам быстро находить и устранять проблемы, а не гадать на кофейной гуще.
И последний совет: настройте сбор статистики через sysstat на всех серверах. Когда проблема возникнет в следующий раз (а она возникнет), вы сможете посмотреть, что происходило до инцидента, и быстрее найти причину.

Когда базовой диагностики уже хватает, чтобы найти узкое место, следующий шаг — научиться разбираться с сервером глубже: понимать, где лежат настройки и журналы, как устроен веб‑сервер и что проверять при сбоях. Эти задачи можно разобрать на практике на открытых уроках с преподавателями OTUS.
19 августа в 20:00. «Почему сервер тормозит: первая диагностика Linux для начинающего администратора». Записаться
3 сентября в 19:00. «Первый веб‑сервер на Linux: Nginx, Apache и проверка доступности». Записаться
17 сентября в 20:00. «Где Linux хранит настройки и логи: разбираем файловую структуру на практике». Записаться
Полный список бесплатных уроков августа смотрите в дайджесте.
NotSlow
А если тормозит когда не смотрите? Чего не видно того и нет? :) Нужен еще автоматический мониторинг. Хотябы графики всего упомянутого (cpu, память, диск, сеть), чтобы наблюдать не только в моменте, но и посматривать что было в прошлом. Плюс желательно автоматические извещения при превышениях (той же cpu нагрузки или LA) на почту или телеграм.
Еще пару ситуаций накину:
Если речь не про выделенный сервер, а vps с соседями, то добавить можно случай когда от вас никакой нагрузки (cpu, диск и т.д.), а сервер/сайт еле ворочается. Или еще хуже, когда вроде все ок, но периодически вроде как подтормаживает немного... но опять же, не по вашей вине, а от действий соседей по серверу.
Или сервер может летать, cpu и остальная нагрузка на нуле, а сайт тупит и тормозит. Большинство владельцев сайтов понятия не имеют как они работают. Просто установят плагинчиков и оно как-то работает. А "под капотом" может оказаться, что делаются например (всегда или с какой-то периодичностью) запросы к сторонним хостам. И вот они могут либо тормозить, либо качество связи до них может меняться. Или запрашиваться может с хоста за cloudflare или подобного, к которому 16кб запросы могут пробиваться, а чуть больше уже повиснут (вместе с сайтом вашим). Т.е. важно не только наблюдать за загруженностью сети, но и иметь понимание куда и зачем наружу ваш сайт обращаться может.
Ну а swap вообще стоит отключать. Иначе проблему недостатка памяти заменяем на проблему тормозящего диска.