Помощь

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

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

Для анализа нагрузки на сервер существует несколько специальных утилит. Мы рассмотрим три из них:

В общем, они довольно похожи между собой. Утилита htop предоставляет интерактивный интерфейс и может быть более удобной в использовании. Top, с другой стороны, поставляется с предустановленными дистрибутивами Linux и не требует отдельной установки. Atop имеет возможность вести логи.

Если ваш веб-сайт работает медленно, также рекомендуется воспользоваться сервисом PageSpeed Insights от Google. Этот инструмент анализирует скорость загрузки страниц и предоставляет рекомендации по оптимизации вашего сайта. Также можно улучшить производительность сайта, переместив каталог временных файлов MySQL в tmpfs.

top

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

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

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

Информация о системе

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

Up — время, прошедшее с момента последней перезагрузки системы.

User — количество текущих пользователей.

Load average — средняя нагрузка на сервере, показывает значения за последние одну, пять и пятнадцать минут.

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 — сортировать по имени пользователя (необходимо ввести имя пользователя)

k — завершить процесс (необходимо указать его идентификатор, PID)

n — изменить количество процессов в выводе (необходимо указать желаемое количество)

c — отобразить полный путь к запущенному процессу (столбец COMMAND)

h — вывести справку

q — выйти из программы

htop

В отличие от утилиты top, htop требует предварительной установки на сервере:

Ubuntu / Debian:

apt-get install htop

CentOS:

yum install htop

После установки запустите:

htop

Вывод команды представлен ниже:

Как и в случае с top, в верхней части отображается информация о системе, а ниже — список процессов. Значения столбцов в htop совпадают с top (они описаны выше).

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

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

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

Дополнительные функции включают в себя:

Пробел — отметить процесс (это позволяет помечать процессы для выполнения с ними групповых операций, таких как завершение).

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

Для управления доступны клавиши F1 – F10:

F1 — вывод справки.

F2 — настройка отображения (добавление или удаление столбцов, отображение дополнительной информации в верхней части и другие параметры).

F3 — поиск процессов.

F4 — фильтрация процессов (показывать только процессы с определенным текстом в имени).

F5 — отображение дерева процессов (показывает отношения между родительскими и дочерними процессами).

F6 — изменение типа сортировки.

F7 / F8 — повыш ение или понижение приоритета процесса.

F9 — завершение процесса (в отличие от top, не требуется указание PID — просто выберите процесс и нажмите F9; для подтверждения завершения нажмите Enter, для отмены — Esc).

F10 — выход из программы.

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

atop

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

Для использования утилиты, её необходимо установить на сервер:

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

Вывод будет иметь примерно следующий вид:

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

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

m — сортировка по использованию памяти

d — сортировка по нагрузке на диск

u — нагрузка по пользователям

v — подробная информация по процессам

i — изменение интервала обновления данных (по умолчанию 10 секунд)

g — вернуть вывод по умолчанию

n — сортировка процессов по нагрузке на сеть (доступно с установленным патчем ядра)

Комбинации клавиш с Shift позволяют сортировать текущий список процессов по соответствующим параметрам:

  • Shift + m — сортировка по использованию памяти
  • Shift + с — сортировка по потреблению CPU (по умолчанию)
  • Shift + d — сортировка по использованию диска
  • Shift + n — сортировка по использованию сети

Логи atop

По умолчанию atop регистрирует информацию о состоянии системы каждые 10 минут и сохраняет её в лог-файле, расположенном в директории /var/log/atop.

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

atop -r

Полезные комбинации клавиш:

  • t — перемещение вперёд по времени
  • Shift + t — перемещение назад по времени

Лог-файл для конкретного дня имеет имя atop_ГГГГММДД. Для просмотра лога за определённый день, используйте команду atop -r и укажите путь к файлу, например:

atop -r /var/log/atop/atop_20200227

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

# Интервал создания снимка нагрузки сервера, в секундах:
INTERVAL=600

# Путь к директории с логами:
LOGPATH="/var/log/atop"

# Имя файла логов
OUTFILE="$LOGPATH/daily.log"

Например, чтобы изменить интервал записи снимков нагрузки на одну минуту, укажите интервал 60.

После внесения изменений перезапустите atop:

systemctl restart atop.service

Остались вопросы - пишите