问题现状
最近一个项目遇到一个非常奇葩的问题:正式服务器被一个WMI Provider Host的系统进程占用大量的CPU资源,导致我们的系统偶尔卡顿
任务管理器-详细信息中CPU时间,这个进程也是占用最多的
接口时不时慢很多
但单独访问我们的接口又正常
WMI Provider Host 这个进程是系统进程,主要负责处理来自各种应用程序和服务的 WMI 查询,大概分析了下:如果 WMI Provider Host 持续占用大量 CPU,Nginx 进程可能无法获得足够的 CPU 时间片来处理请求和转发数据,导致其处理能力下降,请求积压,从而引发长延迟甚至超时。
解决方法
识别具体是哪个进程或服务在调用WMI
使用事件查看器定位
打开“事件查看器”
导航到 Applications and Services Logs -> Microsoft -> Windows -> WMI-Activity -> Operational。
通过右侧的筛选功能,查找“错误” (Errors) 或“警告” (Warnings) 事件。特别是事件 ID 为 5858 或 5859 的警告,它们通常会指出是哪个客户端程序或 PID 在进行 WMI 查询,以及查询的类和方法。这通常是定位根源的最佳方法。
根据日志中的 PID,可以进一步在任务管理器中定位到具体的程序或服务。
通过错误日志的ClientProcessId定位到是向日葵守护进程导致CPU占用一直过高,
处理办法
将服务器重启后,将向日葵相关进程全部关掉,任务管理器中再没有占用CPU高的WMI进程了!
至此,WMI Provider Host 这个系统进程占用CPU资源越来越高导致系统卡顿的问题终于告一段落了!