Назад | Перейти на главную страницу

загрузка процессора более 100% в системе Linux

На одном из наших производственных серверов 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 даст вам значимый результат. Вы можете просто автоматизировать его и записывать вывод для последующего анализа.