WmiPrvSe и двухядерный процессор
Jun 15, 23С чего началось
Мониторинг стал показывать и генерировать сообщения, что периодически возрастает загрузка процессора больше 70% на 5-10 секунд. Стреляло не часто, поэтому местный персонал не обращал внимания на данную проблему. Но приехали “люди из Москвы” и им не понравилось, что такие сообщения проскакивают. Ну раз есть проблема, то решаем её.
Решение
Немного о железе: HP ProLiant DL 120 G6 с процессором Intel Pentium G6950 (2.80Ghz). Сразу отмету вопросы об апгрейде - нет, пока не время и апгрейд будет позже, а пока что есть, то и используем.
Первым делом смотрим нагрузку процессора через диспетчер задач.
Дополнительно к этому в этот же момент начинает проверять что-то Касперский и получаем в сумме нагрузку уже больше 75% в пике.
Натыкаюсь на данную статью от Microsoft, и начинаю выяснять, кто тут замешан.
Первым делом, как и в статье, добавляю счетчики в Мониторе производительности
, чтобы выяснить PID процесса.
Это к ничему интересному не наводит, поэтому перевожу службу WMI на собственный процесс svchost.exe через команду
sc config Winmgmt type= own
А вот теперь подозреваемых стало меньше. Теперь отдельный svchost.exe дает нагрузку, а WmiPrvSe стабильно 0%.
Для помощи из списка утилит Sysinternals открываем Process Explorer, ищем найденый PID процесса и смотрим:
А нагрузку нам дает сейчас служба событий Windows. Открываю логи приложений, сравниваю время с нагрузкой и вижу, что одна из программ просто очень часто пишет диагностические логи. Перевожу в настройках запись логов с отладки на информационные сообщения и нагрузка уходит.
В целом, проблема бы решилась сразу, если знал бы, где основная загвоздка. Потому что в начале грешили на мониторинг по WMI, либо на другие процессы, которые используют WMI.