2014-06-26 217 views
16

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

我查询的每个服务器都会在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专业版和Win 7服务器,每台服务器与我的本地计算机位于同一个域中。

+0

你可以包含你正在使用的WQL句子吗? – RRUZ

+0

是的,只是编辑 – rafatic

回答

0

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

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

+0

我试图在本地运行查询,就像我在我的问题中所说的那样,结果几乎相同。我将尝试将它部署为clickonce – rafatic

0

既然您列出了两个不同的查询,那么知道它们是否很慢或者只是其中之一会很有趣。

在过去,我经历过对WIN32_Processor的查询在某些Windows版本上可能会变慢。如果是这样的话,也许你可以从其他(希望更敏感)所需要的信息对象,如Win32_PerfFormattedData_Counters_ProcessorInformation:

SELECT PercentProcessorTime FROM Win32_PerfFormattedData_Counters_ProcessorInformation 
0

查找到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