簡體   English   中英

為什么WMI查詢有時會這么慢?

[英]Why are WMI Queries so slow sometimes?

我在.Net中使用System.Management命名空間來對遠程服務器執行各種WMI查詢。 在我的日志中,我可以看到有時查詢需要30或40秒才能完成,而有時查詢在不到一秒的時間內完成。

當我看到這些慢查詢時,我嘗試使用wbemtest連接到該框,但它總是連接並快速執行查詢。

任何想法,指針,建議?

當我在反射器中查看System.Management.ManagementScope時,我注意到它似乎泄漏了IWbemServices指針。 看起來這是一個需要在其上調用Release的COM接口(Marshal.ReleaseComObject())。 我不確定這是否相關。 我在流程的生命周期中連接到許多不同的服務器。

您可以嘗試設置WITHIN字段以查看它是否會更快地強制查詢。 你可以發布你正在使用的查詢嗎? 這可能有助於調試任何其他問題

我有相同類型的應用程序在所有不同類型的設備上執行多個WMI查詢,我遇到相同的行為。 使用wbemtest有時會更快但不一定。 我還發現在同一台機器上的某些查詢與同一台機器上的其他查詢的行為方式不同,因為不同的類是查詢。

有一個屬於EnumerationOptions類的ReturnImmediately屬性,如果您在一個批處理中獲取結果而不是通過網絡枚舉它們,它可以幫助您更快地獲得結果。

EnumerationOptions options = new EnumerationOptions();
options.ReturnImmediately = false;

你可以嘗試一下,看看它是否有幫助。 我知道這不是你想聽到的,但我的個人意見是,你無能為力。 您需要編寫代碼才能解決問題。 真正的答案在於深埋在DCOM,WMI協議和WMI存儲庫中。

這個問題特定於一個盒子嗎? 我曾經在遠程方案中遇到過同樣的問題。 我通過在進行遠程調用的盒子上重建TCP / IP堆棧來修復它。

查看您的語言的WBEM_FLAG_RETURN_IMMEDIATE和WBEM_FLAG_FORWARD_ONLY標志。 使用Scriptomatic(來自MS的優秀小VBScript GUI進行WMI調用)時,此選項會自動添加為選項的一部分。 48表示WBEM_FLAG_RETURN_IMMEDIATE | WBEM_FLAG_FORWARD_ONLY。 VBScript示例:

objWMIService.ExecQuery ("Select * from Win32_NetworkConnection",,48)

https://msdn.microsoft.com/en-us/library/aa390880(v=vs.85).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM