Инструкции для UNIX систем

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

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

Для анализа нагрузки сервера с ОС Linux чаще всего используют утилиты:

  • top – стандартная утилита, установлена во всех версиях Linux по умолчанию,
  • htop – удобнее в использовании по сравнению с top, интерактивна,
  • atop – позволяет вести логи.

top

Для запуска просто подключитесь к своему серверу по SSH и выполните:

top

В результате будет отображено следующее:

load-and-process-control-top-htop-atop_20221025_174732_1

В верхней части окна выводится общая информация о системе. Ниже по убыванию степени нагрузки отображаются запущенные процессы. В утилите top выводимая информация обновляется каждые две секунды.

  • Up – время работы системы (с момента запуска),
  • User - количество пользователей в системе,
  • Load average - средняя нагрузка на сервер. Здесь отображаются три значения – нагрузка 1, 5 и 15 минут назад.
  • Tasks total – общее количество запущенных процессов,
  • Tasks running – количество выполняемых  процессов,
  • Tasks sleeping – количество процессов в режиме ожидания,
  • Tasks stopped – количество остановленных процессов,
  • Tasks zombie – количество дочерних процессов, которые ожидают завершения родительского процесса.

Cpu(s) – загрузка процессора различными типами процессов в процентах, включает в себя:

  • us - пользовательские процессы,
  • sy - процессы ядра,
  • ni – пользовательские процессы с ограничениями,
  • id - неиспользуемые ресурсы,
  • wa - операции ввода/вывода,
  • hi – процедуры аппаратного прерывания,
  • si – программные прерывания,
  • st – принудительное ожидание, пока гипервизор обслуживает другой виртуальный процессор (т.е. сколько процессорного времени украдено у сервера).

Чем больше показатель id – тем лучше, то есть процессор загружен не полностью и есть резерв для дополнительных задач.

Высокое значение показателя us говорит о том, что необходимо оптимизировать код сайта.

Mem, Swap – использование оперативной памяти и подкачки:

  • total – общий объем,
  • free – свободный объем,
  • used – используемый объем. 

Все процессы отображены по возрастанию нагрузки на процессор.

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

Управление в утилите top

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

htop

Утилита htop не является встроенной как top, ее нужно установить на сервер:

Ubuntu/Debian

apt-get install htop

CentOS

yum install htop

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

htop

Вывод утилиты выглядит примерно так: 

load-and-process-control-top-htop-atop_20221025_174732_2

Вывод утилиты htop имеет такую же структуру, как и top – в верхней части находится информация о системе: нагрузка на процессор, занятая оперативная память, средняя нагрузка за 1, 5 и 15 минут. Под ней  - список процессов, отсортированных по степени нагрузки на процессор. 

Изменение сортировки производится как и в top:

  • M - по памяти
  • P – по процессору
  • T - по времени

Дополнительные команды:

  • Пробел - отметить процесс (удобно использовать для выполнения операций над группой процессов),
  • u – отобразить процессы определенного пользователя

Для управления htop используются функциональные клавиши:

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

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

atop

Утилиту atop удобно использовать для диагностики «плавающих» ошибок. Она позволяет вести логи, т.е. контролировать работу процессов за прошедший период.

Утилита atop не является встроенной как top, ее нужно установить на сервер:

Ubuntu/Debian

apt-get install atop -y

CentOS

yum install atop -y

Для более эффективного использования рекомендуется добавить atop в автозагрузку:

Ubuntu / Debian / CentOS 7

systemctl enable atop

CentOS 6

chkconfig atop on

Ubuntu 14.04

rm /etc/init/atop.override

Для запуска выполните:

atop

Вывод утилиты atop выглядит так: 

load-and-process-control-top-htop-atop_20221025_174732_3

В верхней части находится общая информация о системе, а также нагрузка на процессор, ядро, память и сеть. В нижней части отображены процессы.

Команды для управления в утилите atop:

  • m - сортировка процессов по использованию памяти
  • d - сортировка процессов по нагрузке на диск
  • n - сортировка процессов по нагрузке на сеть (доступна при установленном патче ядра)
  • u – отображение нагрузки по пользователю
  • v - подробная информация по процессу
  • i - задание интервала обновления вывода (стандартно 10 секунд)
  • g – восстановить вывод по умолчанию

Shift+d,  Shift+m, Shift+n – сортировка текущего списка по заданным параметрам: диск, память, сеть.

Логи atop

Утилита atop по умолчанию сохраняет данные о состоянии системы каждые 10 минут. Файл лога располагается в директории /var/log/atop.

Имя файла логов за день имеет вид atop_ГГГГММДД.

Для просмотра, например, лога за 1 июля 2020 года, введите:

atop -r /var/log/atop/atop_20200701

Для изменения настройки лога откройте файл конфигурации утилиты atop. Он размещается в /etc/default/atop (в CentOS - etc/sysconfig/atop).

INTERVAL=600

Данный параметр задает интервал сохранения информации о нагрузки (в секундах). Для того чтобы установить интервал 20 минут - введите значение INTERVAL=1200

LOGPATH="/var/log/atop"

Данный параметр задает путь к директории с логами.

OUTFILE="$LOGPATH/daily.log"

Данный параметр задает имена файлов логов.

Чтобы изменения вступили в силу, перезапустите atop:

systemctl restart atop.service

Для ускорения работы сайта мы рекомендуем переносить временные файлы MySQL в tmpfs.

Если у Вас остались вопросы - создайте тикет в техподдержку.