2014-06-26 7 views
16

Ich arbeite an einem Programm, das drei verschiedene Server abfragt, um CPU- und LogicalDisk-Informationen zu erhalten.Remote-WMI-Abfrage langsam

Jeder Server, den ich abfrage, gibt mir Werte in 6 bis 15 Sekunden zurück (abhängig vom Server). Es dauert also insgesamt 31 Sekunden, um alle meine Werte zu erhalten (15 Sekunden für den ersten Server, 6 Sekunden für die Sekunde und 10 Sekunden für die dritte).

Ich habe versucht, jede Abfrage Multi-Thread, es reduziert die Ausführungszeit von 1 Sekunde für jeden Server, so glaube ich nicht, dass es die Lösung ist.

Ich habe auch versucht, Anfragen direkt mit Powershell in Servern ausgeführt werden:

  • Erster Server: dauerte es 10 Sekunden (statt 15) Informationen

  • zweiten Server

    abzurufen: es dauerte 10 Sekunden (wie wenn ich sie aus der Ferne) Informationen abrufen

  • Third-Server) es dauerte ca. 1 Sekunde (statt 6)

Hier sind meine Fragen:

SELECT LoadPercentage From WIN32_Processor 

SELECT Size, FreeSpace From WIN32_LogicalDisk 

Meine Frage ist: Gibt es etwas auf meinem Server zu tun Abfragen zu erleichtern? Ich habe bereits versucht, die Firewall und das Antivirenprogramm zu deaktivieren.

PS: Ich frage Windows 2003 R2 Server, Win XP Pro und Win 7 Server, jeweils in der gleichen Domäne wie mein lokaler Computer.

+0

Können Sie die 'WQL' Sätze, die Sie verwenden, einbeziehen? – RRUZ

+0

Ja, gerade bearbeitet – rafatic

Antwort

0

Versuchen Sie, das Leistungsproblem lokal zu untersuchen. Wenn es noch langsam ist, untersuchen Sie Ihre Abfrage.

I don t wissen, was Ihr Projekt Spezifikationen sind, aber ich würde es auf diese Weise nähern: 1) Erstellen Sie eine Konsole-Anwendung, die 2) fragt es auf den Servern planen alle 10-15 Minuten 3 starten) Drücken Sie MSMQ durch oder melden Sie sich bei einer Datenbank oder einem Webdienst an. 4) Die Konsolen-App sollte als clickonce bereitgestellt werden, damit Sie einen einzelnen Punkt zum Aktualisieren haben, falls Sie zusätzliche Leistungsindikatoren benötigen.

+0

Ich habe versucht, Abfragen lokal auszuführen, wie ich in meiner Frage sagte, die Ergebnisse waren ziemlich gleich. Ich werde versuchen, es als clickonce bereitzustellen – rafatic

0

Da Sie zwei verschiedene Abfragen aufgelistet haben, wäre es interessant zu wissen, ob beide langsam sind oder nur eine davon.

In der Vergangenheit habe ich erfahren, dass Abfragen auf WIN32_Processor auf einigen Windows-Versionen langsam sein können. Wenn das der Fall ist, vielleicht können Sie die erforderlichen Informationen von anderen erhalten (hoffentlich reaktions) Objekte wie Win32_PerfFormattedData_Counters_ProcessorInformation:

SELECT PercentProcessorTime FROM Win32_PerfFormattedData_Counters_ProcessorInformation 
0

Blick in die WBEM_FLAG_RETURN_IMMEDIATE Flagge für Ihre Sprache.Bei Verwendung von Scriptomatic (großartige kleine VBScript-GUI von MS für WMI-Aufrufe) wird diese Option automatisch als Teil der Optionen hinzugefügt. Die 48 bedeutet WBEM_FLAG_RETURN_IMMEDIATE | WBEM_FLAG_FORWARD_ONLY. VBScript-Beispiel:

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

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

0

Sie können zwei Dinge nur versuchen, zu überprüfen, ob es für Ihre gut funktioniert.

  1. Versuchen Sie, mit PowerShell-Skript zu gehen.

  2. oder Sie können das Tool in Windows - genannt wbemest. Wenn Sie nicht über WQL von irgendeiner Programmiersprache abfragen, dann sollten Sie oben zwei Möglichkeiten ausprobieren.