Häufige WQL-Überwachungsabfragen


12

Welche WQL-Abfragen würden Sie zur Überwachung typischer Windows-Engpässe verwenden? Mit welchen Daten würden Sie ähnliche Daten wie 'top' oder 'netstat' erhalten? In welchem ​​Intervall würden Sie fragen?

Hier sind ein paar, die ich hilfreich finde.

SELECT PercentDiskTime, AvgDiskQueueLength, DiskReadBytesPerSec, DiskWriteBytesPerSec FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk

SELECT Caption, CommittedBytes, AvailableBytes, PercentCommittedBytesInUse, PagesPerSec, PageFaultsPerSec FROM Win32_PerfFormattedData_PerfOS_Memory

SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor

SELECT Caption, WorkingSet, PageFaultsPerSec,IOReadBytesPerSec, IOWriteBytesPerSec, ThreadCount, HandleCount FROM Win32_PerfFormattedData_PerfProc_Process

SELECT Caption, BytesReceivedPerSec, BytesSentPerSec FROM Win32_PerfFormattedData_Tcpip_NetworkInterface

Ausgezeichnetes Zeug, dies ist auch für Anwendungsprogrammierer nützlich. Ein Großteil dieses Materials ist nicht direkt über einen Win32-API-Aufruf verfügbar. WMI ist nützlich, wird aber nicht so oft diskutiert, wie es sein sollte!
Andon M. Coleman

Antworten:


7

Dies ist eine wirklich gute Frage , und es ist eine Schande, dass es nicht mehr Liebe bekommen hat!

Meine grundlegende Theorie der Engpassanalyse besteht darin, das System als eine Box mit 4 Arten endlicher Ressourcen zu behandeln: Prozessor, Speicher, Festplatte und Netzwerk . Daher möchte ich für jedes Element grundlegende Zahlen erhalten, um den Zustand der Box zu bestimmen. Ich möchte Zahlen, die leicht zu interpretieren sind: hoch ist schlecht, niedrig ist gut. 0 ist am besten, aber nie perfekt erreichbar (immerhin haben wir den Computer gekauft, um zu arbeiten , oder?). Sobald ich sehe, welche der vier Ressourcen der Hauptengpass ist, kann ich feststellen, welches Programm oder welcher Prozess alle Ressourcen verbraucht, und eine fundierte Entscheidung treffen, ob ich diese Ressource erhöhen oder das zu verwendende Programm / den Prozess optimieren muss weniger von der Ressource.

Die wichtigsten Leistungsindikatoren, die ich in diesem Artikel verwende , werden als WMIC-Abfragen formatiert , da kein Scripting erforderlich ist (obwohl dies sicherlich möglich ist!). Sie können jede dieser Abfragen direkt in die cmd-Konsole eingeben:

wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength

Oben ist die Länge der Prozessorwarteschlange angegeben . Dies gibt an, wie viele Threads in der Warteschlange auf die Verarbeitung durch die CPU warten. Hohe Zahlen schlecht, niedrige Zahlen gut. Generell halte ich einen Wert <10 für ein gesundes System.

wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec

Oben ist unter Speicher, Seiteneingabe pro Sekunde die Rate angegeben, mit der Seiten von der Festplatte gelesen werden, um Hardwareseitenfehler zu beheben. Hard-Page-Fehler treten auf, wenn ein Prozess auf eine Seite im virtuellen Speicher verweist, die sich nicht im physischen Speicher befindet und von der Festplatte abgerufen werden muss. Dieser Zähler funktioniert jedoch am besten in Perfmons Diagrammansicht. Auf einem fehlerfreien Computer treten gelegentlich Spitzen auf, wenn Daten von der Festplatte in den Arbeitsspeicher gelesen werden. Je mehr Spitzen angezeigt werden und je höher diese Werte sind, desto mehr Speicher ist für das System eingeschränkt. Wenn das System häufig länger als beispielsweise fünf Sekunden auf einem Wert ungleich Null bleibt, liegt wahrscheinlich ein System mit Speicherengpass vor.

wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name

Oben ist PhysicalDisk (Durchschnittliche Länge der Festplattenwarteschlange) angegeben . Ich halte dies für den Hauptindikator für den Systemzustand, da durch übermäßiges Auslagern von Auslagerungsdateien auch Speicherengpässe auftreten und die CPU-Auslastung häufig erhöht wird. Es wird ein Element für jede gemountete Festplatte sowie die Gesamtheit aller Festplatten angezeigt. Bei einer leistungsfähigen Einzelplatte liegt dieser Wert bei 2 oder darunter. Teilen Sie für Arrays die Anzahl der Spindeln durch die Warteschlangenlänge (z. B .: 4 Spindeln im Array geteilt durch eine Warteschlangenlänge von 8 = 2, was bedeutet, dass das Array eine gute Leistung erbringt).

wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth

Und schließlich haben wir oben NIC-Leistung. Insbesondere Netzwerkschnittstelle, Länge der Ausgabewarteschlange und Fehler bei den empfangenen Paketen . Diese beiden Zähler teilen uns mit, wie viele Pakete auf den Versand warten und wie viele eingehende Pakete Fehler verursacht haben, die wahrscheinlich zu erneuten Übertragungen geführt haben. Wir wollen, dass beide Zahlen bei Null bleiben. Bei dieser Abfrage erhalte ich auch die aktuelle Bandbreite der Netzwerkkarte, die nützliche Informationen enthält.

Sobald ich festgestellt habe, welche Ressource überlastet ist, hänge ich normalerweise entweder vom Process Explorer oder vom Perfmon-Prozessobjekt ab, um herauszufinden, welcher Prozess das Ressourcenschwein ist.


Vielen Dank für die ausführliche Beschreibung. Ich habe zu einem Community-Wiki konvertiert. Ich denke, eine weitere Facette dieser Frage sind die Abfrageintervalle. Einige Engpässe treten nur kurz auf, andere werden möglicherweise weniger häufig abgetastet.
Yancy

Nun, am häufigsten sucht man eher reaktiv nach Engpässen (weil ein Problem beobachtet wurde) als proaktiv (nur auf der Suche nach einem Engpass). In beiden Fällen sind Perfmon-Diagramme über sogar einige Minuten weitaus nützlicher als Momentaufnahmen.
Quux
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.