Oder sollte perfmon auf einen Dev / QA-Server mit Auslastungstests beschränkt sein, die die Produktionsaktivität simulieren?
Ich möchte perfmon zwei Tage lang ausführen ( wie es SQL Server-Meister Brent Ozar vorschlägt ), um einen Überblick über die Datenbankleistung meiner Webanwendung zu erhalten.
sql-server
performance
performance-tuning
perfmon
Bill Paetzke
quelle
quelle
Antworten:
SQL Server und die meisten anderen Produkte generieren die Leistungsindikatoren ständig, unabhängig davon, ob Listener vorhanden sind oder nicht (ignorieren Sie die Startoption -x). Die Zählerrückverfolgung ist für die zu überwachende Anwendung vollständig transparent. Es gibt einen gemeinsam genutzten Speicherbereich, in den die überwachte Anwendung schreibt und aus dem Überwachungssitzungen die Rohwerte in dem angegebenen Intervall lesen. Die einzigen Kosten, die mit der Überwachung verbunden sind, sind die Kosten des Überwachungsprozesses und die Kosten für das Schreiben der abgetasteten Werte auf die Festplatte. Wenn Sie ein angemessenes Erfassungsintervall (normalerweise 15 Sekunden) und eine moderate Anzahl von Zählern (50-100) auswählen und in ein Binärdateiformat schreiben, hat dies normalerweise keine Auswirkungen auf das überwachte System.
Aber ich würde gegen die Verwendung von Perfmon empfehlen (wie in perfmon.exe). Machen Sie sich stattdessen mit logman.exe vertraut (siehe Beschreibung der Tools Logman.exe, Relog.exe und Typeperf.exe) . Auf diese Weise binden Sie die Erfassungssitzung nicht an Ihre Sitzung. Logman ist ein Befehlszeilentool und kann in Skripts und geplanten Jobs zum Starten und Beenden von Erfassungssitzungen verwendet werden.
quelle
Es ist nichts falsch daran, Perfmon auf Produktionsboxen laufen zu lassen. Es ist relativ zurückhaltend und kann viele gute Informationen für Sie sammeln. Und wie würden Sie Produktionslasten genau simulieren, wenn Sie keine Analyse auf dem Produktionsserver durchführen würden? Von Brent Ozar in Ihrem eigenen Link:
Ich habe perfmon auf einer Reihe von Produktions-Exchange-Boxen ohne nachteilige Auswirkungen ausgeführt.
quelle
Seitdem habe ich Clint Huffman , der PAL, ein Dienstprogramm zum Analysieren von Perfmon-Protokollen, einmal in einem Podcast geschrieben hat, zugehört. Ich habe auf allen unseren Produktionsanwendungsservern den so genannten Flight Recorder eingerichtet. Diese Vorgehensweise ist sehr praktisch, um Probleme zu diagnostizieren und Trends zu überwachen.
Unten ist das Skript aufgeführt, mit dem ich einen automatisch startenden Perfmon Collector mit Protokolllöschung einrichte. Auf Wunsch kann eine Datei mit zu sammelnden Leistungsindikatoren (einer pro Zeile) oder eine PAL-Schwellenwert-XML-Datei eingespeist werden. Ich benutze gerne die PAL-Threshold-Dateien.
quelle
Wir machen das ziemlich oft. Dies ist auch für die Erstellung einer Baseline in der realen Umgebung von entscheidender Bedeutung, damit Sie später vergleichen können, ob es Probleme gibt oder ob Sie eine Kapazitätsstudie durchführen müssen.
Ich empfehle jedoch, ein Intervall von 10 Sekunden nicht zu unterschreiten. Wenn Sie viele Objekte / Zähler sammeln und das Intervall zu häufig ist, kann sich dies auf den Betrieb auswirken.
Microsoft verfügt über einen PerfMon-Assistenten, der die Aufgabe für Sie einrichtet.
http://www.microsoft.com/downloads/details.aspx?FamilyID=31FCCD98-C3A1-4644-9622-FAA046D69214&displaylang=de
quelle
In einer idealen Welt, in der ein Produktionsserver genau das spiegelt, was ein Entwicklungsserver tut, und auch ein genaues Duplikat des Entwicklungsservers ist, sollte perfmon auf dem Produktionsserver niemals erforderlich sein, da die Ergebnisse mit denen auf dem Entwicklungsserver identisch wären. Natürlich passiert diese mythische Situation nie, daher müssen wir perfmon auf Produktionsservern ausführen, und daran ist absolut nichts auszusetzen. Unter anderem müssen wir möglicherweise perfmon und andere Tools verwenden, um zu erfahren, warum sich der Produktionsserver nicht wie der Entwicklungsserver verhält.
quelle
Warum perfmonieren? Ich meine, neuere Versionen von SQL Server haben ihre eigene Methode, dies zu tun, einschließlich des Aufbaus eines (zentralen) Data Warehouse mit Leistungsindikatoren, die dann abgefragt und abgeglichen werden können. Es macht keinen Sinn, dort perfmon zu laufen.
Ich bin wie immer erstaunt über alle Beiträge von Leuten, die die Dokumentation offensichtlich nie gelesen haben;)
http://www.simple-talk.com/sql/learn-sql-server/sql-server-2008-performance-data-collector/ ist ein guter Anfang. IMHO sollte das auf fast jedem SQL-Server funktionieren, der für Produktionszwecke verwendet wird.
quelle
Nichts ist falsch daran, Perfmon auszuführen, wie von vielen vorgeschlagen, aber ich würde stattdessen Profiler ausführen oder zusätzlich mit den gleichen Einschränkungen nicht zu oft erfassen, sondern nur lange laufende Abfragen erfassen, dh Dauer> x Sekunden oder CPU> xx , oder lautet> xxxx; Sehr geringe Auswirkung, und Sie werden schnell die Abfragen sehen, die am meisten von der Optimierung profitieren würden.
quelle