In Projekten stehe ich oft vor der Herausforderung die Performance einer vermeintlichen oder tatsächlich langsamen SharePoint Installation zu messen. Am besten geht dies, indem ich eine Anzahl ausgewählter Performancecounter gleichzeitig überwache. Nun sind dies eine ganze Menge und jedes Mal diese zu konfigurieren recht aufwendig. Dieser Blogartikel zeigt, wie sich diese Arbeit erleichtern lässt.
Vorbemerkung
Der Gedanke ist, ein PowerShell Script zu erstellen, welches die Counter aus eine Textdatei liest und in eine Datei schreibt, welche ich wieder in den Performancemonitor einlesen kann. Dort kann ich mir dann alle Werte anzeigen lassen oder nur einige davon. Das Script läuft dann so lange, bis ich es eben abbreche. Folgende Voraussetzungen, damit alles funktioniert, müssen unbedingt vorhanden sein:
- Das Script muss von einem Konto gestartet werden, welches das Recht zum Ausführen von Scripten hat, in den Ordner schreiben und alle Performancecounter lesen darf. Typischerweise ist dies ein administratives Konto.
- Diese Anleitung wird nur mit einem englischen SharePoint auf einem englischen Windowsserver funktionieren. Bei anderen Sprachen müssen die Performancecounter entsprechend übersetzt werden.
- Es sollte die aktuellste PowerShell Version installiert sein.
- Das Script sollte nicht in der Root ausgeführt werden, sondern in einem extra Ordner.
- Das Script muss für jedem SharePoint Server auf dem jeweiligen Server ausgeführt werden.
Daten erfassen
Erstellen Sie zuerst eine Textdatei, in welcher Sie die folgenden Counter kopieren. Jeder Counter stellt dabei eine Zeile dar. Der Namen meiner Datei ist counter.txt
.NET CLR Memory(*)% Time in GC ASP.NETApplication Restarts ASP.NETRequest Execution Time ASP.NETRequests Rejected ASP.NETRequests Queued ASP.NETWorker Process Restarts ASP.NETRequest Wait Time ASP.NET Applications(*)Requests/Sec LogicalDisk(*)% Idle Time MemoryAvailable MBytes Memory% Committed Bytes In Use MemoryPage Faults/sec MemoryPages Input/sec MemoryPage Reads/sec MemoryPages/sec MemoryPool Nonpaged Bytes Network Interface(*)Bytes Total/sec Network Interface(*)Packets/sec Paging File(*)% Usage PhysicalDisk(*)Current Disk Queue Length PhysicalDisk(*)% Disk Time PhysicalDisk(*)Disk Transfers/sec PhysicalDisk(*)Avg. Disk sec/Transfer Process(*)% Processor Time Process(*)Page Faults/sec Process(*)Page File Bytes Peak Process(*)Page File Bytes Process(*)Private Bytes Process(*)Virtual Bytes Peak Process(*)Virtual Bytes Process(*)Working Set Peak Process(*)Working Set Processor(*)% Processor Time Processor(*)Interrupts/sec RedirectorServer Sessions Hung ServerWork Item Shortages SystemContext Switches/sec SystemProcessor Queue Length Web Service(*)Bytes Received/sec Web Service(*)Bytes Sent/sec Web Service(*)Total Connection Attempts (all instances) Web Service(*)Current Connections Web Service(*)Get Requests/sec SharePoint Foundation(*)Active Threads SharePoint Foundation(*)Sql Query Executing time SharePoint Foundation(*)Executing Sql Queries SharePoint Foundation(*)Responded Page Requests Rate SharePoint Foundation(*)Executing Time/Page Request SharePoint Foundation(*)Current Page Requests SharePoint Foundation(*)Reject Page Requests Rate SharePoint Foundation(*)Incoming Page Requests Rate
Erstellen Sie danach eine PowerShell Datei, welche den folgenden Code enthält. Die Counter werden aller fünf Sekunden erfasst. Bei weniger oder mehr passen Sie -sampleinterval 5 an. Die Datei, in welcher die Counter gespeichert werden heißt counter.bin.
get-counter -counter (get-content counter.txt) -MaxSamples 100 -sampleinterval 5 | export-counter counter.bin
Starten Sie das Script aus einer PowerShell Umgehung und lassen Sie es laufen solange Sie die Daten erfassen möchten.
Daten auswerten
Starten Sie den Performancemonitor perfmon.msc und klicken Sie auf Performance -> Monitoring Tools – Performance Monitor. Ziehen Sie die Datei counter.bin per D&D ins Fenster. Damit Sie die erfassten Werte sehen können, müssen Sie diese noch hinzufügen. Denn jetzt sollten eigentlich überhaupt keine Werte mehr gemessen werden. Klicken Sie auf + und fügen Sie die gewünschten Werte hinzu. Sie können in der Liste auch alle Werte markieren und mit einmal hinzufügen. Das war es dann auch schon. Inspiriert zu dem Artikel wurde ich von https://gallery.technet.microsoft.com/office/PowerShell-script-for-59cf3f70
Haben Sie diese Anforderung schon einmal gehabt? Oder eine andere Frage? Dann schreiben Sie einen Kommentar!
Vielen Dank für Ihr Interesse an meinem Blogeintrag.
Gerne beantworte ich Ihnen persönlich weitergehende Fragen zu diesem Thema.
Kontaktieren Sie mich einfach über mein Kontaktformular oder schreiben Sie einen Kommentar.
Sie wollen mehr über meine Leistungen erfahren? Dann klicken Sie hier.