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.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s