Monitoring von ASP
Geschrieben von: Christoph Wille Performance Monitoring ist ein weiterer Baustein am Weg zu einer erfolgreichen Website. Im letzten Artikel habe ich besonderes Augenmerk auf das Monitoring der Serverperformance gelegt, die mit den Performance Counter Objekten Memory, Processor und Physical/Logical Disk überwacht werden kann. Heute wende ich mich dem Active Server Pages Performance Counter Objekt zu, das spezielle Informationen über ASP zu Tage fördert. Remote Performance MonitoringIm letzten Artikel haben wir uns die Performance Counter mit Hilfe des Performance Monitors angesehen. Bei Servern, die im Internet laufen, hat man allerdings nicht immer Zugriff auf die Konsole mittels eines Remote Administration Tools (Remotely Possible, Terminal Services, ...) - besonders nicht, wenn man auf einem Shared Server eines Providers hostet. Das kann man allerdings umgehen - mit Hilfe einer Gratis Komponente von AlphaSierraPapa (Downloadlink am Ende des Artikels). Die AspQPerfCounters Komponente erlaubt es, beliebige Performance Counter auszulesen - solange man weiß, wie sie heißen. Generell sieht ein Counter wie folgt aus: \\Machine\PerfObject(ParentInstance/ObjectInstance#InstanceIndex)\CounterDer \\Machine Teil ist optional; wenn er inkludiert ist, dann ist es der NetBIOS Name der Maschine (Achtung: für Maschinen außer der lokalen Maschine benötigt man die entsprechenden Benutzerrechte, um auf die Performancedaten zugreifen zu dürfen!). Der Teil \PerfObject muß angeben werden, und stellt das Objekt dar, von dem man den Counter auslesen möchte. Sollte das Objekt Instanzen unterstützen (zB mehrere Prozessoren in einer MPS Maschine), muß man den InstanceIndex angeben. Um das Ganze mit einem praktischen Beispiel für die AspQPerfCounters Komponente zu kombinieren: Set objQPerfCnt = CreateObject("Softwing.AspQPerfCounters") bResult = objQPerfCnt.OpenQuery() bResult = objQPerfCnt.AddCounter("\\.\Active Server Pages\Requests/sec") bResult = objQPerfCnt.CollectQueryData() varResult = objQPerfCnt.GetFormattedCounterVal(_ "\\.\Active Server Pages\Requests/sec", 0) bResult = objQPerfCnt.CloseQuery()In der dritten Zeile wird der Counter Requests/sec für das Active Server Pages Objekt auf der lokalen Maschine zur Abfrage hinzugefügt. Generell wird das AspQPerfCounters Objekt wie folgt verwendet:
Welche Performance Counter gibt es nun eigentlich für das Active Server Pages Objekt? Darüber gibt die nächste Sektion Auskunft, und zwar etwas ausführlicher als der Performance Monitor von Microsoft. Active Server Pages Performance Counter ObjektDie folgende Tabelle beschreibt die einzelnen Performance Counter die für das Active Server Pages Objekt zur Verfügung stehen. Zur leichteren Orientierung sind sowohl die englischsprachigen als auch die deutschsprachigen Performance Counter Namen aufgeführt - weil teilweise die Übersetzungen aus dem Englischen nicht sehr intuitiv sind (und für den Performance Monitor kann man nur die deutschen Strings verwenden).
Auslesen einiger ASP CounterDas folgende Skript überwacht einige für Live-Server wichtige Performance Counter: diejenigen, die die Anzahl der Fehler und ihre Ursachen ausweisen. Mit diesem Skript bekommt man eine Idee, ob, und wenn ja was falschläuft.
<% @LANGUAGE=VBSCRIPT %> <% Option Explicit %> <% ' counters to watch Dim arrFriendlyName, arrCounterPath arrFriendlyName = Array("Total failed requests", _ "Errors per second (current)",_ "Runtime errors (total)", "Script compiler errors (total)",_ "ASP preprocessor errors (total)") arrCounterPath = Array("\\.\Active Server Pages\Requests Failed Total", _ "\\.\Active Server Pages\Errors/Sec", _ "\\.\Active Server Pages\Errors During Script Runtime",_ "\\.\Active Server Pages\Errors From Script Compilers", _ "\\.\Active Server Pages\Errors From ASP Preprocessor") %> <html> <head> <title>Testing AspQPerfCounters</title> </head> <h1>ASP Performance Counters for Debugging</h1> <body bgcolor="#ffffff"> <% Dim objQPerfCnt, bResult, varResult, i Set objQPerfCnt = CreateObject("Softwing.AspQPerfCounters") bResult = objQPerfCnt.OpenQuery() for i = 0 to UBound(arrCounterPath) bResult = objQPerfCnt.AddCounter(arrCounterPath(i)) next bResult = objQPerfCnt.CollectQueryData() for i=0 to UBound(arrCounterPath) varResult=objQPerfCnt.GetFormattedCounterVal(arrCounterPath(i),0) Response.Write "<b>" & arrFriendlyName(i) & "</b>: " Response.Write varResult & "<br>" & vbCrLf next %> </body> </html> SchlußbemerkungDie AspQPerfCounters Komponente sollte man zu einem wichtigen Tool in der Serverüberwachung machen - weil damit Performancedaten des Servers von einem beliebigen Ort aus einfach abrufbar werden. Die Counter des Active Server Pages Objekts erlauben es, Fehler bereits vor der Analyse der Web Logs zu identifizieren. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Einführung in Performance Monitoring Links zu anderen SitesWenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |