Решил написать шпаргалку пользования такой замечательной утилитой как atop. Потому что в случае курьезной ситуации, именно эта программка поможет понять кто виновник.
Тем, кому интересно почему именно atop - сюда »
Про установку рассказывать нечего, разве что после нее atop запуститься автоматом с параметрами:
atop -a -w /var/log/atop.log 600
это означает, что atop каждые 600 секунд (каждые 10 минут) делает бинарный снапшот состояния системы и записывает его в /var/log/atop.log (в новой версии /var/log/atop_YYYYMMDD).
Не знаю как Вас, но мне нужно знать, что происходит с моим сервером, хотя бы каждые 5 секунд. Поэтому, меняем параметры автозагрузки atop (в новой версии есть файл конфигурации /etc/default/atop):
# Интервал через который делается снимок нагрузки сервера, в секундах:
LOGINTERVAL=5
# хранить бэкапы за 5 дней:
LOGGENERATIONS=5
# Путь до логов atop:
LOGPATH="/var/log/atop"
# параметр необходимый для рассчета PSIZE (The proportional memory size of this process (or user)):
LOGOPTS="-R"и перезапускаем его:
service atop restart
ура, мы это сделали, atop пишет свою историю каждые 5 секунд.
История или логи
Теперь попробуем посмотреть историю нагрузки нашего сервера, а сделать это можно так:
atop -r /var/log/atop.log
эта команда запускает читалку лог-истории, гулять по которой можно с помощью клавиатурных клавишь:
t – вперед
t + Shift – назад
изначально загружается история с самой первого снапшота.
Посмотреть начиная с определенного времени можно так:
atop -r /var/log/atop/atop_20240702 -b 16:40
На этом плюшки atop не заканчиваются, использование Shift + нужная клавиша – выстроит текущий список по указанным параметрам:
m — выстроит процессы по занятой памяти
d — построит процессы по использованию диска
n — выстроит процессы по использованию сети (доступно только с установленным патчем)
v — покажет более подробную информацию о процессах (пользователя, дату и время начала процесса)
u — выстроит таблицу по самым прожорливым пользователям
g — вернет все в дефолтный вывод
Реальный пример применения
Рассмотрим снапшот, на котором в верхней половине красным выделен на 99% загруженный диск, в нижней — активное чтение процессом mysqld (столбец RDDSK).

Осталось соединиться с сервером MySQL и выяснить, что происходит:
mysql> show processlist;
+-------+-------+--------------------+--------+---------+------+----------------------+------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+-------+--------------------+--------+---------+------+----------------------+------------+
...
| 35804 | ixu | yapro.ru:35589 | soft | Sleep | 751 | | NULL |
| 35806 | ixu | yapro.ru:36360 | soft | Query | 0 | statistics | SELECT ... |
| 35813 | ixu | yapro.ru:37779 | soft | Query | 1 | Sorting result | SELECT ... |
...
| 35871 | ixu | yapro.ru:50581 | soft | Query | 175 | Copying to tmp table | SELECT ... |
...
| 36039 | root | localhost | NULL | Query | 0 | NULL | show proces|
+-------+-------+--------------------+--------+---------+------+----------------------+------------+
25 rows in set (0.00 sec)Проблемное место: Copying to tmp table см. Time = 175
Для тех, кто хочет подробнее разобраться с нагрузками именно на диск, советую утилиту dstat, которая позиционируется автором, как объединённая замена: vmstat, iostat, netstat и ifstat.
Как сказано, отчеты по системе можно просматривать не только используя atop, но и через atopsar.
Команда atopsar — это встроенный анализатор логов atop, который позволит быстро найти проблему и смотреть лог в нужное вам время. При этом atopsar использует цвета и (по запросу) маркеры, чтобы подчеркнуть, что использование ресурса является критическим (красный) или почти критическим (голубой).
Общая структура команды:
atopsar [-flags] [-r file|date|y...] [-R cnt] [-b hh:mm] [-e hh:mm]
Также при указании названия файла, из которого будет формироваться отчет, можно создавать короткую запись, состоящую только из y, например, 'yyy' – в данном случае будет читаться файл atop 3-дневной давности. Если сегодня 10.02.24, то будет использован файл от 07.02.24. Можно просто указать 'y' и будет использован файл за прошлый день.
Например, такая команда выведет отчет о средней нагрузке за позавчера :
atopsar -r yy -R12 -p

Основные ключи:
-b — с какого времени надо вывести лог,
-e — до какого времени надо вывести лог,
-R — позволяет объединить несколько снимков системы в один.
Например, если у вас в системе установлено значение интервала записи на 300 секунд, то флаг '-R 12' позволит увидеть общую информацию за каждый час. Бывает полезно для локализации проблемы, если вам неизвестно точное время проблемы.
Например, команда:
atopsar -r yyyy -R24 -d -b 10:00 -e 16:00
Она выведет информацию по нагрузке на каждый диск отдельно из лога 4 дня назад с 10:00 до 16:00 с шагом в 2 часа.
При этом на нашем тестовом сервере значение LOGINTERVAL=300, поэтому значение установили '-R 24' для вывода информации за каждые 2 часа. В вашем случае оно может отличаться.

Общая нагрузка:
-d — нагрузка на каждый диск отдельно
-m — нагрузка на оперативную память и swap
-с — нагрузка на процессор, отдельно по каждому ядру
-p — информация по средней нагрузке (LA) и аппаратным прерываниям
-w — нагрузка на ipv4
-W — ошибки на ipv4
-i — нагрузка на интерфейс
-I — ошибки на сетевых интерфейсах
Допускается комбинирование ключей в одной команде, например, если нам необходимо увидеть нагрузку на процессор и использование памяти в отчётах, то можно указать ключи вместе:
atopsar -mс -r /var/log/atop/atop_20240205
В этом случае atopsar сформирует 2 отчета – по нагрузке на процессор и оперативную память.
Поиск отдельных процессов*:
-O — top-3 процессов CPU
-G — top-3 процессов RAM
-D — top-3 процессов диск
-N — top-3 процессов сеть
*данные флаги не допускают флаг -R.
Пример. Нагрузка на RAM с 11:00 до 21:00 20 февраля:atopsar -r /var/log/atop/atop_20240220 -b 11:00 -e 21:00 -m

Нагрузка по сетевым интерфейсам:atopsar -r /var/log/atop/atop_20240221 -b 1:00 -e 6:00 -w

Нагрузка на диски:atopsar -r /var/log/atop/atop_20240221 -b 9:00 -e 15:00

Пример следующей команды поможет вам понять, какие процессы занимают больше всего оперативной памяти на сервере в процентах от общей памяти и в какой момент времени:
atopsar -r /var/log/atop/atop_20240221 -b 9:00 -e 17:00 -G

Если вам этого недостаточно, можно посмотреть полный снимок нагрузки на сервер командой:atop -r путь до лога, можно сразу указать временные рамки.
Например: atop -r /var/log/atop/atop_20240211 -b 09:00 -e 20:00
Откроется тот же atop, в котором видна вся нагрузка на сервере, где можно выставлять сортировку по процессам, но только на нужное время. Чтобы открыть следующий снимок нагрузки, нажмите t, предыдущий снимок — T. Время снимка указано в первой строке посередине экрана.
Также необходимо обратить внимание на использование цветов в выводимой информации. По умолчанию параметры в верхней части экрана atop меняют цвета в зависимости от процента использования ресурса системой. Когда использование ресурсов становится критичным для системы, atop меняет цвет сначала на синий, затем — на красный. Эти проценты немного различаются в зависимости от типа ресурса:
Эти параметры могут быть изменены в файле ~/.atoprc для более тонкой настройки, если он создан. По умолчанию такого файла нет.

На скрине выше в верхней части представлены основные параметры системы:
В данном окне (см. скрин выше) можно применять следующие горячие клавиши для изменения нижней части окна:
- для изменения отображения таблицы процессов — отвечает за просмотр:
'm' - памяти, используемой процессами;
'd' - использования диска процессами;
'n' - использования сети;
'v' - детальной информации по процессам (ppid, user/group, date/time, status, exitcode)
'c' - полной команды для каждого процесса.
- для сортировки по использованию:
'C' - процессора;
'M' - оперативной памяти;
'D' - оперативной дисковой системы;
'N' - оперативной дисковой сети;
'A' - самые активные пользователи ресурсов (auto mode).
- для суммирования:
'u' - по пользователям системы;
'p' - по процессам.
- для поиска* — фокус на определённом:
'U' - пользователе системы;
'P' - процессе по названию;
'I' - процессе по PID;
'/' - выражении командной строки или её части.
*После ввода горячей клавиши необходимо ввести слово или регулярное выражение.
Дополнительная информация в статье. Удачки.
Комментарии