На одном из наших производственных серверов Linux загрузка ЦП превышает 100 %
а иногда это 250%
.
Как узнать, какой процесс использует больше ресурсов ЦП, и где найти журналы использования ЦП?
ОС: RHEL 5.5
Загрузка ЦП измеряется относительно одного ЦП. Максимальное значение составляет 100% для каждого ЦП, поэтому максимальная загрузка ЦП в системе с четырьмя ЦП составит 400%.
В sar
Утилита собирает некоторую статистику о вашей системе, если она включена. Самый простой способ получить к ним доступ - ввести sar
в командной строке.
Гораздо лучший вариант - установить систему мониторинга, такую как Cacti, Munin или Zabbix. (Хотя Nagios умеет строить графики, это не его сильная сторона.) По ServerFault уже есть много вопросов о том, какая система мониторинга лучше. Установив один из них, вам будет сложно вспомнить, как вы жили без него.
Как правило, они не скажут вам, какой процесс использовал весь ЦП в любой момент времени. Для этого, top
или htop
в то время ваш лучший выбор. Имейте в виду, что 25 процессов Apache, использующих 10% ЦП, каждый по-разному отображаются в top
к одному процессу MySQL, использующему 250% ЦП.
Другой ключевой показатель, за которым следует следить, - это «средняя нагрузка». Это показатель того, сколько процессов в настоящее время ожидают загрузки процессора. Это очень хороший показатель того, насколько медленно ваша система будет работать.
Еще одно замечание об использовании ЦП: виртуальные машины могут динамически изменять мощность ЦП в соответствии с потребностями виртуальной машины. Я видел, как один процесс показывает использование ЦП на 9999% сверху из виртуальной машины. По этому поводу VMWare дает совет: «Не доверяйте метрикам, измеренным внутри виртуальной машины».
Попробуйте использовать top
команда
man top
для получения дополнительной информации
Другой вариант - использовать ps
команда и сортировка по использованию ЦП:
ps aux --sort=+cpu
Нет журнала использования процесса, вы можете установить что-то вроде atop
для этого. Раньше также был пакет GNU для «системного учета», но он менее пригоден для IIRC.
Не уверен, что вы используете для измерения использования, но вы можете использовать:
cat /proc/loadavg
Другие упомянули топ.
Если хочешь, можешь бежать top -b -n1 | head
в пакетном режиме в cron и где-нибудь сохраните вывод, чтобы отслеживать основные процессы.
у меня есть ответил аналогичный вопрос к этому. Вы можете улучшить этот сценарий для своих нужд. По сути, команда ps -eo pcpu,pid,user,args | sort -k 1 -r | head -n 5
даст вам значимый результат. Вы можете просто автоматизировать его и записывать вывод для последующего анализа.