c# wmi

c# - Consulta WMI remota lenta



(5)

Estoy trabajando en un programa que consulta tres servidores diferentes para obtener información de CPU y LogicalDisk.

Cada servidor que pregunto me devuelve los valores en 6 a 15 segundos (dependiendo del servidor). Por lo tanto, toma un total de 31 segundos para obtener todos mis valores (15 segundos para el primer servidor, 6 para el segundo y 10 para el tercero).

Intenté multiprocilar cada consulta, redujo el tiempo de ejecución de 1 segundo para cada servidor, por lo que no creo que sea la solución.

También intenté ejecutar consultas directamente con powershell en servidores:

  • Primer servidor: tardó 10 segundos (en lugar de 15) en recuperar información

  • Segundo servidor: tardó 10 segundos (como cuando lo hago de forma remota) para recuperar información

  • Tercer servidor) tomó ~ 1 segundo (en lugar de 6)

Aquí están mis consultas:

SELECT LoadPercentage From WIN32_Processor SELECT Size, FreeSpace From WIN32_LogicalDisk

Mi pregunta es: ¿hay algo que hacer en mis servidores para facilitar las consultas? Ya intenté desactivar el firewall y el antivirus.

PD: Estoy consultando el servidor Windows 2003 R2, Win XP pro y el servidor Win 7, cada uno en el mismo dominio que mi computadora local.


Dado que enumeró dos consultas diferentes, sería interesante saber si ambas son lentas o solo una.

En el pasado he experimentado que las consultas al procesador WIN32 pueden ser lentas en algunas versiones de Windows. Si ese es el caso, tal vez pueda obtener la información requerida de otros objetos (con suerte más receptivos) como Win32_PerfFormattedData_Counters_ProcessorInformation:

SELECT PercentProcessorTime FROM Win32_PerfFormattedData_Counters_ProcessorInformation


Intente consultar localmente para investigar el problema de rendimiento. Si sigue siendo lento, investigue su consulta.

No sé cuáles son las especificaciones de su proyecto, pero lo abordaría de esta manera: 1) crear una aplicación de consola que haga las consultas 2) programarla en los servidores al inicio cada 10-15 minutos 3) empujar a través de MSMQ o iniciar sesión en un Base de datos o servicio web. 4) la aplicación de la consola debe implementarse como clic una vez para que tenga un solo punto para actualizar en caso de que necesite contadores de rendimiento adicionales.


Mire el indicador WBEM_FLAG_RETURN_IMMEDIATE para su idioma. Cuando se usa Scriptomatic (GUI de VBScript de MS para realizar llamadas WMI), esta opción se agrega automáticamente como parte de las opciones. El 48 significa WBEM_FLAG_RETURN_IMMEDIATE | WBEM_FLAG_FORWARD_ONLY. Ejemplo de VBScript:

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

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