10 минут. всплески использования процессора: как я могу узнать, какие процессы являются причиной?
Приведенный выше график использования процессора был сгенерирован путём запуска psensor на моей машине с Linux. Обратите внимание на 10-минутные всплески активности, потребляющие до 40% Xeon. Машина должна была бездействовать всю ночь, за исключением, возможно, административных процессов, настроенных по умолчанию с использованием однопользовательского рабочего стола Debian. Высота окна составляет 67% (из-за короткого всплеска справа).
Как я могу узнать, какие процессы вызывают эти 10-минутные всплески загрузки процессора? В идеале было бы полезно иметь похожие графики для каждого процесса.
4 ответа
Глядя на график, мне кажется, что периоды высокой загрузки ЦП происходят целыми или полчаса, что указывает на что-то, работающее через cron. Если вы хотите начать расследование по этому маршруту, я бы начал с этого.
Тем не менее, учитывая, что пакеты высокой загрузки ЦП довольно длинные (в вашем случае десять минут), вы можете просто вывести состояние системы через собственную задачу cron для анализа утром.
Я бы предложил использовать top
пакетный режим (-b
) с количеством итераций 1 (-n 1
), поэтому вы добавили бы что-то вроде следующего в новый файл в /etc/cron.d:
* * * * * root top -b -n 1 > /var/log/processes/$(date +%F_%R)
Не забудьте создать каталог /var/log/process для записи в него.
Утром выберите один или несколько из этих файлов в период высокой загрузки ЦП и присмотритесь к ним.
Порядок сортировки по умолчанию, по-видимому, является самым высоким текущим использованием ЦП сверху, что должно хорошо работать в вашем случае. В противном случае вы можете просто импортировать файл в приложение для работы с электронными таблицами (он должен импортироваться точно так же, как данные фиксированной ширины) и отсортировать по полю%CPU. Как только вы узнаете имя двоичного файла, вы можете найти его на диске (включая dpkg -S
чтобы выяснить, к какому пакету он принадлежит), или дополнить что-то вроде pstree
чтобы понять, что привело к тому, что этот конкретный двоичный файл вызывается.
Это, в свою очередь, должно дать вам хорошее представление о том, какие программы (а не только процессы) перегружают процессор, что позволит вам определить, является ли это проблемой, и, если вы считаете, что это проблема, тогда вы сможете выяснить, как выключи.
Я думаю, что вы должны кодировать его самостоятельно, чтобы получить информацию о том, какой процесс принимает процессор.
Здесь уже было обсуждение этого вопроса, которое может сэкономить вам некоторое время:
Я использовал https://sealion.com/ при первом запуске, и он отслеживает и записывает системную информацию, такую как получение результатов top и т.п. Может быть, это даст вам то, что вам нужно, чтобы отследить проблему.
Я бы предложил использовать поверх с интервалом 30 секунд для захвата данных. Затем вы можете легко перемещаться в любой точке (t - вперед / shift + t - назад) и получать расширенную статистику - загрузка процессора /io/ сети и так далее.