繁体   English   中英

远程WMI查询速度慢

[英]Remote WMI query slow

我正在研究一个查询三个不同服务器的程序,以获取CPU和LogicalDisk信息。

我查询的每个服务器都会在6到15秒内返回值(取决于服务器)。 所以我需要总共31秒来获取所有值(第一台服务器为15秒,第二台服务器为6秒,第三台服务器为10秒)。

我尝试多线程每个查询,它减少了每个服务器1秒的执行时间,所以我不认为这是解决方案。

我还尝试在服务器中直接使用powershell运行查询:

  • 第一台服务器:需要10秒钟(而不是15秒)来检索信息

  • 第二台服务器:它需要10秒钟(就像我远程操作时)来检索信息

  • 第三台服务器)花了大约1秒钟(而不是6秒)

这是我的疑问:

SELECT LoadPercentage From WIN32_Processor

SELECT Size, FreeSpace From WIN32_LogicalDisk

我的问题是:我的服务器上有什么可以使查询更容易吗? 我已经尝试停用防火墙和防病毒软件。

PS:我正在查询Windows 2003 R2服务器,Win XP pro和Win 7服务器,每个服务器都与我的本地计算机位于同一个域中。

也许它可以通过使用CIM而不是WMI加速整个事情。

在这里您可以找到性能比较: http//community.spiceworks.com/topic/332657-powershell-cmdlet-performance-get-wmiobject-vs-get-ciminstance

当然,您也可以在C#中获得特定的CimInstance: https ://msdn.microsoft.com/en-us/library/dn313201(v = vs。85).aspx

尝试在本地查询以调查性能问题。 如果仍然很慢,请调查您的查询。

我不知道你的项目规格是什么,但我会这样做:1)创建一个控制台应用程序,查询2)每10-15分钟启动时在服务器上安排3)推送MSMQ或登录到数据库或Web服务。 4)应该将控制台应用程序部署为clickonce,以便在需要其他性能计数器时有一个单点进行更新。

由于您列出了两个不同的查询,因此了解它们是慢还是只有其中一个会很有趣。

在过去,我遇到过一些Windows版本对WIN32_Processor的查询速度很慢。 如果是这种情况,也许您可​​以从其他(希望更具响应性)的对象获取所需的信息,例如Win32_PerfFormattedData_Counters_ProcessorInformation:

SELECT PercentProcessorTime FROM Win32_PerfFormattedData_Counters_ProcessorInformation

查看您的语言的WBEM_FLAG_RETURN_IMMEDIATE标志。 使用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

您可以尝试两件事来检查它是否适合您。

  1. 尝试使用PowerShell脚本。 http://www.powershellpro.com/powershell-tutorial-introduction/powershell-scripting-with-wmi/

  2. 或者您可以使用Windows中提供的工具 - 名为wbemtest 如果您没有从任何编程语言查询WQL以上,那么您应该尝试以上两个选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM