Раздел помощи SpaceWeb

Контроль нагрузки и процессов: top, htop

24 июл, 2023

Каждый запущенный на сервере процесс создает нагрузку. Если ресурсов сервера становится недостаточно, могут возникать неполадки. Например, медленная работа сайта или задержки в выполнении скриптов.

Проанализировать нагрузку, которую создают процессы, можно с помощью специальных утилит:  top или htop. Работа с htop может быть удобнее благодаря интерактивности; top предустановлена во всех дистрибутивах Linux и не требует отдельной установки.

При медленной работе сайта дополнительно рекомендуется воспользоваться сервисом PageSpeed Insights от Google, который анализирует скорость загрузки страниц и дает рекомендации по оптимизации работы сайта.

Также можно попытаться оптимизировать работу сайта переносом каталога временных файлов MySQL в tmpfs.

Top

Утилита top предустановлена в UNIX-системах, поэтому для запуска  достаточно подключиться к серверу по SSH и выполнить команду top.

Вывод утилиты выглядит следующим образом:

Вверху выводится информация о системе, ниже - список процессов. Вывод обновляется каждые 2 секунды. Процессы, оказывающие самую большую нагрузку на процессор, будут выведены вверху списка.

Сведения о системе

Слева вверху указано текущее время системы, далее:

  • Up - время работы системы с последнего запуска
  • User - количество текущих пользователей.
  • Load average - средняя нагрузка на сервер: отображаются значения за одну, пять и 15 минут назад.
  • Tasks - общее количество запущенных процессов в разных статусах (running - выполняемые; sleeping - в ожидании; stopped - остановленные; zombie - "зомби", дочерние процессы, ожидающие завершения родительского процесса).
  • Cpu(s) - процент времени процессора, затраченного на выполнение процессов, в том числе:
    us - пользовательские процессы (высокое значение данного показателя может указывать, в том числе, на ошибки в коде сайта, необходимость его оптимизации);
    sy - процессы ядра;
    id - неиспользуемые ресурсы (чем выше этот показатель, тем лучше);
    wa - операции ввода/вывода, т.е. дисковые операции.
  • Mem, Swap - сведения об использовании оперативной памяти (total - общий объем, free - объем свободной памяти, used - объем использованной памяти).

Сведения о процессах

По умолчанию процессы выстроены в таблице по размеру нагрузки на процессор - от большего к меньшему.

Обозначения столбцов:

  • PID - идентификатор процесса;
  • USER - пользователь, запустивший процесс;
  • PR - приоритет процесса;
  • NI - измененный приоритет (присвоенный пользователем с помощью команды nice);
  • VIRT - объем используемой виртуальной памяти (здесь выводится тот объем памяти, который был запрошен процессом, даже если фактически используется меньше);
  • RES - объем используемой оперативной памяти (в данном случае, если процесс запросил 50Мб памяти, а использует 10Мб, будет выведено 10Мб);
  • SHR - объем памяти, разделяемой с другими процессами (т.е. память, которая может быть использована другими процессами);
  • S - статус процесса (running - запущен; sleeping - в ожидании; zombie - процесс-"зомби");
  • %CPU - процент использования процессорного времени;
  • %MEM - процент использования оперативной памяти;
  • TIME - общее время работы процесса;
  • COMMAND - имя процесса (команда, которой был запущен процесс).

Управление

Для работы с утилитой top используются следующие клавиши:

  • Пробел - обновить вывод
  • M - сортировка по используемой памяти
  • P - сортировка по нагрузке на процессор (используется по умолчанию)
  • T - сортировка по времени работы процесса
  • A - сортировка по максимальному потреблению различных ресурсов
  • u - сортировка по имени пользователя (потребуется ввести имя пользователя)
  • n - изменить количество процессов в выводе (потребуется указать нужное количество)
  • c - вывести полный путь запущенного процесса (столбец COMMAND)
  • h - вывод справки
  • q - выход из программы

Htop

В отличие от top, утилиту htop сначала необходимо установить на сервер:

apt-get install htop

И после запустить:

htop

Вывод команды выглядит следующим образом:

Аналогично выводу top, в верхней части представлена информация о системе, ниже - список процессов. Значения столбцов в htop те же, что в top.

Сверху слева  можно видеть данные о нагрузке каждого ядра процессора, объем занятой памяти, сведения о количестве процессов, значения load avearage (средней нагрузки) за последние 1, 5 и 15 минут, а также аптайм системы.

По умолчанию процессы отсортированы по уровню нагрузки на процессор - от большего к меньшему. Для сортировки по занятой памяти или любому другому параметру, нужно кликнуть на название нужного столбца. Для обратной сортировки (от меньшего к большему) нужно кликнуть на тот же столбец еще раз. Также для управления сортировкой можно использовать клавиши M (сортировка по памяти), P (по процессору) или T (по времени), аналогично утилите top.

Дополнительно используются:

  • Пробел - отметить процесс. Таким образом можно помечать процессы для групповой операции с ними.
  • u - вывести процессы конкретного пользователя.

Для управления используются клавиши F1 - F10:

  • F1 - вывод справки.
  • F2 - настройка вывода (добавление, удаление столбцов, отображение расширенной информации в верхнем блоке и пр.)
  • F3 - поиск процессов
  • F4 - фильтрация процессов (вывод процессов, имеющих в названии указанное слово)
  • F5 - вывод дерева процессов (родительские и дочерние процессы)
  • F6 - изменить тип сортировки
  • F7 / F8 - повышение / понижение приоритета
  • F9 - завершение процесса (в отличие от top, не требуется указание PID - надо выделить с помощью мыши или клавиатуры нужный процесс и нажать F9. Для подтверждения завершения процесса нажать Enter, для отмены - Esc).
  • F10 - выход из программы

Функции для каждой клавиши могут изменяться в зависимости от меню программы, доступные действия по соответствующим клавишам будут отображаться внизу окна.