Как отслеживать нагрузку CPU и использование памяти на Linux-сервере?
Мониторинг нагрузки CPU и использования памяти помогает выявлять процессы, которые потребляют слишком много ресурсов сервера, и диагностировать проблемы с производительностью Linux-сервера.
Linux предоставляет несколько встроенных инструментов для проверки текущего использования ресурсов, системной нагрузки и запущенных процессов.
Проверка нагрузки CPU с помощью top
Выполните следующую команду:
top
Утилита top в реальном времени отображает информацию о нагрузке CPU, использовании памяти, системной нагрузке и запущенных процессах.
В сводной информации о CPU обратите особое внимание на:
- us — процессорное время, используемое пользовательскими процессами.
- sy — процессорное время, используемое ядром.
- id — время простоя CPU.
- wa — время ожидания операций ввода-вывода.
В списке процессов также отображается значение %CPU для отдельных процессов. Постоянно высокое значение может помочь определить приложения, потребляющие значительные ресурсы CPU.
Примечание:
В многоядерной системе многопоточный процесс может показывать нагрузку CPU выше 100 %. Например, значение около 200 % может означать, что процесс использует ресурсы, эквивалентные двум логическим CPU.
Проверка средней системной нагрузки
Чтобы быстро посмотреть текущую среднюю системную нагрузку, выполните:
uptime
Команда отображает три значения load average приблизительно за последние 1, 5 и 15 минут.
Load average — это не то же самое, что использование CPU. Этот показатель отражает среднее количество задач, которые выполняются, ожидают процессорного времени или находятся в определённых непрерываемых состояниях ожидания.
Чтобы проверить количество доступных системе логических CPU, выполните:
nproc
При оценке load average сравнивайте его с количеством логических CPU, доступных вашему серверу. Например, постоянный load average около 4 означает значительно более высокую относительную нагрузку на сервере с 4 логическими CPU, чем такое же значение на сервере с 16 логическими CPU.
Примечание:
Высокий load average не всегда означает, что перегружен именно CPU. Процессы, ожидающие операций с диском или других операций ввода-вывода, также могут увеличивать load average.
Поиск процессов с наибольшей нагрузкой CPU
Чтобы вывести процессы с сортировкой по использованию CPU, выполните:
ps -eo pid,user,comm,%cpu,%mem --sort=-%cpu | head
Это поможет определить, какие процессы потребляют больше всего ресурсов CPU.
Проверка использования памяти
Чтобы посмотреть текущее использование RAM и swap, выполните:
free -h
Команда показывает общий объём, используемую, свободную и доступную память, а также использование swap.
При оценке доступной памяти обращайте особое внимание на значение available. Linux использует незадействованную RAM для файлового кэша, поэтому низкое значение free само по себе не обязательно означает нехватку оперативной памяти.
Если значение available постоянно остаётся очень низким и сервер активно использует swap, производительность приложений может снизиться. С помощью top или других инструментов мониторинга можно определить процессы, потребляющие большое количество памяти.
Мониторинг использования ресурсов в течение длительного времени
Однократное измерение не всегда указывает на проблему с производительностью. Использование CPU и системная нагрузка могут временно увеличиваться во время резервного копирования, обновления программного обеспечения, выполнения запланированных задач, операций с базами данных и других ресурсоёмких процессов.
Если сервер регулярно работает медленно или перестаёт отвечать, отслеживайте использование CPU, load average, доступную память, использование swap и процессы с наибольшим потреблением ресурсов в течение более длительного периода.