
本文面向兩種用戶,普通小白和windows開發(fā)程序員。
查出誰在調(diào)用這個(gè)wmiprvse.exe<svg width="10px" height="10px" viewbox="0 0 16 16" class="ZDI ZDI--FourPointedStar16 css-1dvsrp" fill="currentColor">
win+R 組合鍵打開運(yùn)行,輸入命令services.msc,回車或確認(rèn)。

2. 找到如下藍(lán)色背景的Windows Management Instrumentation。

3. 雙擊打開屬性彈窗,點(diǎn)擊依存關(guān)系。下發(fā)的”以下系統(tǒng)組件依賴此服務(wù)“顯示的就是哪些服務(wù)會(huì)觸發(fā)wmiprvse.exe的運(yùn)行。比如Dell Data Vault Collector,我們?cè)倩氐椒?wù)去找這個(gè)。

4. 留意服務(wù)的狀態(tài)是運(yùn)行中的,像我主機(jī),這個(gè)服務(wù)就在運(yùn)行。雙擊打開屬性彈窗。留意下可執(zhí)行文件路徑,到該路徑下看下是否是自己安裝的,最好卸載的方式去除這個(gè)服務(wù)。


點(diǎn)擊停止的話,可能重啟會(huì)再次啟動(dòng),所以把啟動(dòng)類型這里設(shè)為禁用。

以上對(duì)于小白的一種解決方式,當(dāng)然若是系統(tǒng)不通過服務(wù)的方式調(diào)用wmi則上述步驟不起作用,需要高階排查。
查看wmi的日志,定位到底是誰在密集調(diào)用這個(gè)服務(wù)。控制臺(tái)執(zhí)行WMIMon.exe<svg width="10px" height="10px" viewbox="0 0 16 16" class="ZDI ZDI--FourPointedStar16 css-1dvsrp" fill="currentColor">

2. Ctrl+C關(guān)閉剛剛的命令。日志量可能很大,我這里采用的方法是頻率,看哪個(gè)進(jìn)程調(diào)用頻次高。notepad++打開C盤下的wmilog.txt文件。按照進(jìn)程_ClientProcessId進(jìn)行搜索,觀察次數(shù)。如下圖,總共1480次客戶端調(diào)用,光這個(gè)就占了640次。那我們就分析這個(gè)進(jìn)程,進(jìn)程id=5412。


3. 如下圖,就把某絨揪出來了,當(dāng)然這個(gè)可能是誤傷,先卸載后再觀察。如果好了就罷了。如果不好,再分析其他進(jìn)程id。(此處蛐蛐幾句,搞安全的就是細(xì)致,把命令行都隱藏了,也不知道有意無意的~)

至此,作為開發(fā)者比較精細(xì)的處理了wmiprvse占用高。那是否會(huì)有疑問這個(gè)東西是干啥的,為啥這么多程序服務(wù)依賴這個(gè)。
此節(jié)適合對(duì)windows系統(tǒng)有深入興趣的讀者。
首先了解下:WMI(Windows Management Instrumentation)是Windows系統(tǒng)管理的核心技術(shù),用于管理和監(jiān)控系統(tǒng)資源、硬件、軟件和服務(wù)。說白了,我們要查詢下cpu的負(fù)載、內(nèi)存的余量、磁盤信息等均可以通過此組件。wmi支持的全部如下。

那么導(dǎo)致這個(gè)進(jìn)程CPU占用高的原因是啥?是查詢性能頻繁還是微軟的這個(gè)組件本身有問題。實(shí)際上2者都存在。以下是微軟自win7關(guān)于這個(gè)組件的問題。
在 Windows 7 或 Windows Server 2008 R2 中的 Wmiprvse.exe 過程中出現(xiàn)內(nèi)存泄漏 - Microsoft 支持
下圖是msdn上對(duì)wmi的架構(gòu)介紹,我們分層看,第三層,是客戶端層或者叫請(qǐng)求層,非官方寫的程序都屬于這一層。通過COM接口的方式調(diào)用WMI的服務(wù)。第2層,wmi管理了一個(gè)倉庫,就是一個(gè)數(shù)據(jù)庫,存儲(chǔ)這些采集數(shù)據(jù)。第1層,是和系統(tǒng)相關(guān)調(diào)用,win7、10、11、server可能有差異,就在最低的第1層做了兼容。可理解為微軟自己的全家桶很大,做了一層適配。開發(fā)一次wmi的代碼,在微軟的各個(gè)產(chǎn)品均可正常執(zhí)行。

從wmi使用的方式也可看出,和sql語句很像。微軟稱為WQL<svg width="10px" height="10px" viewbox="0 0 16 16" class="ZDI ZDI--FourPointedStar16 css-1dvsrp" fill="currentColor">
對(duì)于個(gè)人電腦來說wmi使用最多的也就是性能采集,支持腳本的方式對(duì)于云服務(wù)廠商處理批量主機(jī)會(huì)方便很多。下面結(jié)合我最近遇到的現(xiàn)場(chǎng)wmiprvse.exe占用高的問題,做個(gè)深入分析。
太多了,放到這篇文章了。
WmiPrvse.exe 耗費(fèi)CPU在干啥 - YBT的文章 - 知乎