Planetahost VPS
Перейти к основному контенту

Определение и анализ нагрузки на Linux-системы

Введение

Для администраторов серверов критически важно уметь оперативно диагностировать причины повышенной нагрузки на систему. Понимание того, какие ресурсы исчерпаны и какие процессы создают нагрузку, позволяет принимать обоснованные решения: оптимизировать работу сервисов или масштабировать ресурсы.
В этой статье рассмотрим практические методы диагностики.

Ключевые утилиты для мониторинга

Базовый мониторинг системы

Утилита top одна из основных утилит для мониторинга системы и процессов в реальном времени в Linux/Unix-системах.
Чтобы запустить её, достаточно в терминале набрать команду top:

root@server:~# top

При запуске top экран делится на две основные части:

Снимок экрана от 2025-12-10 10-41-31.png

  • Сводка системы (верхние строки):
    • Первая строка:
      •  Снимок экрана от 2025-12-10 11-32-57.png
      • Текущее время.
      • Время работы системы (uptime).
      • Число пользователей (user).
      • Load average (средняя нагрузка) за 1, 5 и 15 минут — ключевой показатель! Означает среднее количество процессов, ожидающих в очереди на выполнение. Правило: если значение больше количества ядер CPU — система перегружена (но для однопоточных приложений высокие значения могут быть нормой).
    • Вторая строка:
      •  Снимок экрана от 2025-12-10 11-33-28.png
      • (Tasks): Общая информация о процессах: общее число
      • Работающие (running)
      • Спящие (sleeping)
      • Остановленные (stopped)
      • Процессы-зомби (zombie). Zombie-процессы (не убираемые родителем) в небольшом количестве — норма, но если их число растет — это проблема.
    • Третья и четвертая строки (ЦПУ — %Cpu(s)):

      • Снимок экрана от 2025-12-10 11-34-11.png

      • us — пользовательские процессы.

      • sy — процессы ядра.

      • id — простой (idle). Низкий id (менее 10-20%) — признак высокой нагрузки на CPU.

      • wa — ожидание ввода-вывода (I/O wait). Высокий wa (более 5-10%) — указывает на "бутылочное горлышко" ввода-вывода (медленный диск, высокая сетевая активность).

      • hi, si — прерывания.

      • st — "виртуальному ЦПУ" не дали время (актуально для виртуальных машин).

    • Пятая и шестая строки (Память — KiB Mem / Swap):

      • Снимок экрана от 2025-12-10 11-34-53.png

      • Показывает использование оперативной (Mem) и swap-памяти.

      • Важно смотреть на доступную память (avail Mem) и использование swap (used Swap).

        • Активное использование swap при свободной оперативной памяти — нормально (ядро кэширует).

        • Активное использование swap при малой свободной RAM — признак нехватки памяти, система начинает "тормозить".

  • Таблица процессов (нижняя часть):

    • Снимок экрана от 2025-12-10 11-35-20.png

    • Список процессов, сортированный по умолчанию по убыванию нагрузки на ЦПУ.

      • PID — идентификатор процесса.

      • USER — владелец процесса.

      • PR / NI — приоритет (Priority / Nice).

      • VIRT — виртуальная память (вся память, включая своп и библиотеки).

      • RES — резидентная память (физическая RAM, используемая процессом). Показывает реальное потребление "оперативки".

      • SHR — разделяемая память (библиотеки и др.).

      • %CPU — загрузка ЦПУ процессом.

      • %MEM — доля физической памяти, используемая процессом.

      • TIME+ — общее время работы процесса на ЦПУ.

      • COMMAND — имя команды.

На что обратить внимание при нагрузке (поиск проблем)
  1. Load average: Сравнить с числом ядер CPU (lscpu или нажмите 1 в top).
  2. %CPU idle (id): Если близок к 0% — процессор загружен полностью.
  3. I/O wait (wa): Высокое значение — система ждет медленного диска/сети.
  4. Процессы-зомби (zombie): Много зомби — ошибка в программе.
  5. Память: Мало avail Mem и растет used Swap — нехватка RAM.
  6. В таблице процессов: Искать процессы с высокими значениями %CPU, %MEM или RES. Это "виновники" нагрузки.
Основные клавиши управления (интерактивные команды)
  • Сортировка и поиск:
    • P (по умолчанию) — сортировка по использованию ЦПУ (%CPU).
    • M — сортировка по использованию памяти (%MEM).
    • N — сортировка по PID (номеру процесса).
    • T — сортировка по времени работы (TIME+).
    • R — обратный порядок сортировки (toggle).
    • L или & — поиск по имени процесса. Вводите строку.
  • Отображение информации:

    • 1 (цифра) — показать нагрузку на каждое ядро ЦПУ отдельно.

    • t — переключить отображение строк CPU (график/текст/скрыть).

    • m — переключить отображение строк памяти (график/текст/скрыть).

    • u — показать процессы только конкретного пользователя. Введите имя.

    • Shift + H — показать/скрыть потоки (threads). Важно для многопоточных приложений.

    • c — показать полную команду с аргументами.

    • Shift + V — включить древовидный режим отображения иерархии процессов.

    • x или y — подсветка столбца сортировки и активного процесса.

  • Управление процессами:

    • k — убить (kill) процесс. Запросит PID и сигнал (по умолчанию 15SIGTERM, "вежливое" завер