Advanced
load average
Описание
load average - среднее количество задач, которые выполняются, готовы выполняться на CPU или находятся в непрерываемом сне (обычно ожидание I/O)
То есть учитываются не только процессы оидающие процессор
Например:
-
Процесс выполняется на CPU - учитывается.
-
Процесс готов выполняться, но ждет свободный CPU - учитывается
-
Процесс находится в состоянии D, например ожидает дисковую операцию - тоже учитывается.
-
Процесс спит в состоянии S, ожидая события - обычно не учитывается.
Почему 16.5 при 8 CPU - повод проверить сервер
Например
Высокий Load Average не доказывает перегрузку процессора. Причиной может быть, например, большое количество процессов в состоянии D из-за проблем с дисковой подсистемой.
htop
С ее помощью можно посмотреть:
-
CPU - загрузку каждого логического процессора
-
MEM - использование оперативной памяти.
-
SWAP - использование подкачки
-
Processes - процессы, потребляющие ресурсы
-
Process state - состояние процессов (R, S, D и другие)
Нюансы htop
htop не дает полной картины дисковой подсистемы. Для диагностики I/O нужны дополнительные инструменты.
Потребление ресурсов процессами
Например в списке процессов:
В Linux процесс может использовать несколько логических CPU одновременно, если в нем несколько потоков или других исполняемых задач.
При восьми логический CPU:
-
100% - примерно один полностью загруженный логический CPU
-
400% - эквивалент четырех полностью загруженных CPU
-
780% - эквивалент 7,8 загруженного CPU
Состояние R
R - Running или Runnable
Задача либо выполняется на процессоре, либо готова к выполнению и ожидает CPU.
Это не означает, что процесс работает в режиме реального времени.
Как диагностировать?
- Определить, что за процесс
- Посмотреть нагрузку по потокам
- Проверить логи приложения
Memory
Пример:
free - свободная память
available - память. которую Linux оценивает как доступную для запуска новых приложений без активного использования Swap
Пример:
free = 1 Gib - память, которая сейчас вообще не занята.
available = 3 Gib - примерно столько памяти система может предоставить приложениям, в том числе освободив часть кеша.
Поэтому маленькое значение free само по себе не означает нехватку памяти.
Swap
- позволяет Linux размещать некоторые страницы памяти вне оперативной памяти (нкпиотель)
| Столбец | Значение |
|---|---|
si |
Данные, считываемые из swap в RAM |
so |
Данные, записываемые из RAM в Swap |
OOM Killer (Out of Memory Killer)
- механизм ядра Linux, который завершает процессы при критической нехватке памяти.
Это означает что ядро выбрало процесс python3 с PID 2451 и принудительно завершило его.
Полезные команды
| Команда | Для чего |
|---|---|
free -h |
Проверить текущее использование RAM и Swap |
ps aux --sort=-%mem |
Найти процессы с высоким потреблением памяти |
journalctl -k |
Посмотреть сообщения ядра об OOM |
systemctl status myapp |
Проверить состояние приложения, если оно запущено через systemd |
vmstat 1 |
Посмотреть динамиу памяти и подкачку |
Systemd
Например:
● myapp.service - Python Application
Loaded: loaded (/etc/systemd/system/myapp.service; enabled)
Active: failed (Result: exit-code)
Process: 1234 ExecStart=/usr/bin/python3 /opt/myapp/app.py
Main PID: 1234 (code=exited, status=1/FAILURE)
enabled означает, что сервис настроен на автоматический запуск при достижении соответствующей цели systemd, обычно во время загрузки Linux
Active: failed - systemd считает запуск или работу сервиса завершившимися с ошибкой.
Main PID: 1234 - идентификатор основного процесса приложения.
status=1/FAILURE - процесс завершился с кодом возврата 1, что обычно означает ошибку.
Просмотр логов
Посмотреть последние 100 записей журнала сервиса
Посмотреть в реальном времени:
Перечитывание конфигурации unit-файлов systemd
Есть три операции:
| Команда | Назначение |
|---|---|
systemctl daemon-reload |
Перечитать unit-файлы systemd |
systemctl reload myapp |
Попросить работающий сервис перечитать собственную конфигурацию, если он поддерживает reload |
systemctl restart myapp |
Перезапустить сервис |
Последняя проверка 14.10.2026