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

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

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

Проанализировать, что именно нагружает сервер, можно с помощью специальных утилит. Их довольно много; в статье мы рассмотрим три из них:

В целом они довольно похожи; работа с `htop` может быть немного удобнее за счет интерактивности; при этом `top` предустановлена во всех дистрибутивах Linux и не требует отдельной установки; `atop` отличается возможностью ведения логов.  

При медленной работе сайта дополнительно рекомендуем воспользоваться сервисом [PageSpeed Insights](https://pagespeed.web.dev/) от Google, который анализирует скорость загрузки страниц и сообщает, каким образом можно оптимизировать работу сайта. Также можно попытаться оптимизировать работу сайта за счет переноса каталога [временных файлов MySQL в tmpfs](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/improving-site-performance-mysql-to-tmpfs).

## top

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

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

![Top](https://content.timeweb.com/assets/f1701b00-1856-4486-8a53-29d267b35408?width=646&height=630)

В верхней части выводится информация о системе, ниже — список процессов. Вывод обновляется каждые 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** — сортировка по имени пользователя (потребуется ввести имя пользователя)

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

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

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

**h** — вывод справки

**q** — выход из программы

## htop

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

**Ubuntu / Debian:**

```shell
apt install htop
```

**CentOS:**

```shell
dnf install htop
```

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

```shell
htop
```

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

![Htop](https://content.timeweb.com/assets/825bf9e7-e21e-447c-a2e5-9da079dc8644?width=1366&height=737)

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

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

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

Чтобы отсортировать их по занятой памяти (или любому другому параметру), просто кликните на название нужного столбца, например 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:**

```shell
apt install atop -y
```

**CentOS:**

```shell
dnf install atop -y
```

Также рекомендуем добавить `atop` в автозагрузку:

```shell
systemctl enable atop
```

Запустите утилиту:

```shell
atop
```

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

![Atop](https://content.timeweb.com/assets/c1072556-299e-4a07-8c13-f002af0ed032?width=894&height=583)

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

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

**m** — сортировка по используемой памяти

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

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

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

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

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

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

Сочетания клавиш с Shift выстроят текущий список процессов по соответствующим параметрам:

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

### **Логи atop**

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

Чтобы просмотреть лог за сегодня, выполните:

```shell
atop -r
```

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

-   **t** — перейти вперед по времени
-   **Shift + t** — перейти назад по времени

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

```shell
atop -r /var/log/atop/atop_20250227
```

Изменить настройки ведения лога можно в конфигурационном файле `atop`, который размещается по пути `/etc/default/atop` или `/etc/sysconfig/atop` — в CentOS.

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

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

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

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

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

```shell
systemctl restart atop.service
```
