Что было. Виртуальная машина с Windows стала неотзывчивой, в диспетчере задач процесс «WMI Provider Host» (WmiPrvSE.exe) держит все ядра. Автор перезапустил службу Windows Management Instrumentation (net stop Winmgmt && net start Winmgmt), нагрузка ушла. Подтверждено.
Что это значит. Сам WmiPrvSE ничего не делает по своей инициативе: он отвечает на запросы. Если он грузит процессор, кто-то шлёт ему запросы непрерывно или запрашивает что-то тяжёлое (например, перечисление всех файлов через CIM_DataFile). Перезапуск службы обрывает текущие запросы, но клиент никуда не делся, и через часы или дни картина повторится.
Как найти клиента.
- Журнал событий: «Журналы приложений и служб → Microsoft → Windows → WMI-Activity → Operational». В событиях 5858 (ошибки запросов) и, при включённой трассировке, 5857/5861 указан
ClientProcessIdи текст запроса. Сопоставить PID с процессом:tasklist /svc | findstr <PID>или в диспетчере задач. - Если процесс это
svchost, узнать, какая служба внутри:tasklist /svc /fi "PID eq <PID>". - Типичные клиенты: агенты мониторинга и инвентаризации, антивирусные консоли, средства управления от вендора оборудования, PowerShell-скрипты по расписанию, панели хостинга, а также сама система при сборе телеметрии сразу после обновления.
Что делать по результату.
- Свой скрипт или агент: уменьшить частоту опроса, заменить тяжёлые классы WMI (
Win32_Product, полный обходCIM_DataFile) на точечные запросы сWHERE. - Агент мониторинга: обновить или настроить интервалы; часто проблему чинит свежая версия агента.
- Повторяется без явного клиента: проверить целостность репозитория WMI (
winmgmt /verifyrepository; при ошибкеwinmgmt /salvagerepository) и поставить обновления, в накопительных обновлениях периодически исправляют утечки в провайдерах. - Постоянный бесконтрольный рост памяти у WmiPrvSE вместе с CPU: смотреть событие 5612 (превышена квота провайдера), это уже отдельная тема о квотах WMI.
Что не делать. Не отключать службу WMI и не блокировать WmiPrvSE: от WMI зависят планировщик, обновления, управление сервером, диагностика. Не завершать процесс вручную в цикле: это то же самое, что перезапуск службы, только грубее.
На виртуальной машине. Один vCPU и агент, опрашивающий WMI каждые 10 секунд, дают ровно такую картину. Проверьте, что на машине нет двух агентов мониторинга одновременно (свой и от площадки).
Диагностика высокой нагрузки WMI описана в документации Microsoft.