У нас есть сервер с необычно высокой нагрузкой и утилитой ЦП, но мы не можем понять почему. Когда мы запускаем верх, все процессы кажутся очень низкими.
http://cl.ly/2d1g0K3q261r0R0K3e35
Есть ли лучший способ найти причину этого?
Нагрузка - это мера рабочей нагрузки системы за 1, 5 и 15 минут.
Наиболее распространенное заблуждение заключается в том, что средняя загрузка напрямую связана с использованием процессора системой.
Однако загрузка включает дополнительные измерения, такие как ожидание ЦП ввода-вывода, что, как мне кажется, является вашей проблемой.
Основываясь на изображении, я предполагаю, что у вас закончилась память и вы начали перекачивать данные на диск.
Простой free -m
сообщит вам, сколько оперативной памяти и свопа используется.
Интересный столбец - это бесплатный столбец, кроме -/+ buffers/cache
.
Если он близок к нулю, у вас закончилась оперативная память, и вы должны действовать соответственно.
думаю эта ошибка это ваш случай. Судя по выходным данным, у вас достаточно памяти (обратите внимание на кешированные 14 ГБ или около того), нет проблем с вводом-выводом, но у вас запущены процессы, связанные с xen. Это заставляет меня думать, что это ошибка.
Заметил, что средняя загрузка довольно высока (68, вау). Возможно ли, что существует много процессов, которые занимают немного ЦП и, таким образом, отнимают все время ЦП? Возможно, эти процессы просто начинаются и заканчиваются очень быстро, поэтому top не может зафиксировать их существование, вы можете попытаться увидеть, видит ли это atop или нет.
Пытаться
iotop
IO был для меня большую часть времени.
Попробуйте использовать:
top -o cpu
В -o
флаг заставит top упорядочить процессы по загрузке ЦП в порядке убывания.
Это могут быть заблокированные файлы на nfs или любой другой объект, который блокирует файл, к которому другому процессу нужен доступ.
также может быть пропущена настроенная служба со слишком большим количеством активных потоков
Похоже, использование ЦП происходит из потока. top
похоже, не принимает это во внимание. Я недавно видел это на сервере mysql. выполняются операторы INSERT, но мне не удалось получить новые строки с помощью SELECT, потому что какой-то поток mysqld обновлял индекс таблицы. top показывает 100% пользовательскую нагрузку на одно ядро, но каждый процесс, включая mysqld, занимал 0,0% ЦП. часами позже тот же SELECT предоставил ожидаемый набор результатов.
Смотрите также