Leistungsindikatoren für ASP.NET

Aktualisiert: November 2007

ASP.NET unterstützt mit system- und anwendungsspezifischen Leistungsindikatoren zwei Gruppen von Leistungsindikatoren. Systemleistungsindikatoren werden im Windows-Systemmonitor als ASP.NET-Leistungsindikatorobjekt verfügbar gemacht. Anwendungsleistungsindikatoren werden als ASP.NET-Anwendungsleistungsobjekt verfügbar gemacht.

Hinweis:

Der jedem Leistungsindikator zugeordnete Wert wird alle 400 Millisekunden aktualisiert. Beim Erstellen einer Überwachungsanwendung müssen Sie diesen Zeitsprung beachten, damit der Code keinen veralteten Zählerwert verwendet. Weitere Informationen finden Sie unter Verwenden von Systemüberwachungskomponenten.

Weitere Informationen zu System- und Anwendungsleistungsindikatoren finden Sie unter Gewusst wie: Erstellen von Leistungsindikatorkategorien, Kategorie- und Indikatorverwaltung und Gewusst wie: Erstellen benutzerdefinierter Leistungsindikatoren

Zur Überwachung der Leistung Ihrer ASP.NET-Webanwendungen können Sie die in der folgenden Tabelle aufgelisteten Leistungsindikatoren verfolgen.

Leistungsobjekt

Leistungsindikator

ASP.NET

Anwendungsneustarts

ASP.NET

Anforderungen in Warteschlange

ASP.NET

Workerprozess-Neustarts

ASP.NET-Anwendungen

Fehler gesamt

ASP.NET-Anwendungen

Anforderungen/s

Prozessor

Prozessorzeit %

Hinweis:
Eine niedrige CPU-Auslastung oder das Unvermögen, die CPU-Auslastung unabhängig von der Clientlast zu maximieren, kann auf Sperr- oder Ressourcenkonflikte in der Webanwendung hinweisen.

Zusätzlich können die folgenden Leistungsindikatoren beim Ermitteln von Leistungsproblemen in Webanwendungen hilfreich sein:

Leistungsobjekt

Leistungsindikator

ASP.NET-Anwendungen

Pipeline-Instanzenzahl

.NET CLR-Ausnahmen

Anzahl der ausgelösten Ausnahmen

System

Kontextschalter/s

Der Zähler Anzahl der ausgelösten Ausnahmen zeigt die Anzahl von Ausnahmen an, die in einer Anwendung ausgelöst wurden, da diese Auswirkungen auf die Leistung haben können. Bei einigen Codepfaden ist das ordnungsgemäße Funktionieren jedoch von Ausnahmen abhängig. Beispielsweise löst die Redirect-Methode des Response-Objekts die ThreadAbortException-Ausnahme aus, die nicht abgefangen werden kann. Es ist u. U. sinnvoll, diesen Wert über den Zähler Fehler gesamt zu verfolgen. So können Sie erfahren, ob die Ausnahme einen Fehler in der Anwendung verursacht hat.

Der Zähler Kontextwechsel/s misst die Rate, mit der Threadkontexte durch alle CPUs auf dem Webservercomputer gewechselt werden. Ein hoher Wert für diesen Zähler gibt entweder viele Sperrkonflikte oder häufige Wechsel zwischen Benutzer- und Kernelmodus durch den Thread an. In diesem Fall sollten Sie eine weitere Überprüfung mit Profilern und anderen Tools durchführen.

Systemspezifische Leistungsindikatoren für ASP.NET

ASP.NET unterstützt die in der folgenden Tabelle aufgelisteten ASP.NET-Systemleistungsindikatoren. Diese Indikatoren erfassen Informationen zu allen ASP.NET-Anwendungen auf einem Webservercomputer.

Hinweis:

Es besteht ein wesentlicher Unterschied zwischen den Statusserversitzungen-Zählern im ASP.NET-Leistungsobjekt, die nur für den Servercomputer gelten, auf dem der Statusserver ausgeführt wird, und den Sitzungen-Zählern im ASP.NET-Anwendungen-Leistungsobjekt, die nur für im Prozess auftretende Benutzersitzungen gelten.

  • Anwendungsneustarts
    Die Häufigkeit, mit der eine Anwendung während der Lebensdauer des Webservers neu gestartet wurde. Anwendungsneustarts werden jedes Mal inkrementiert, wenn ein Application_OnEnd-Ereignis ausgelöst wird. Ein Anwendungsneustart tritt bei Änderungen an der Datei Web.config auf, bei Änderungen an Assemblys, die im Verzeichnis Bin der Anwendung gespeichert sind, oder wenn die Anwendung aufgrund einer Reihe von Änderungen an den ASP.NET-Webseiten neu kompiliert werden muss. Unerwartete Erhöhungen bei diesem Zähler bedeuten u. U., dass unvorhergesehene Probleme ein Wiederverwenden der Webanwendung verursachen. In diesem Fall sollten Sie so schnell wie möglich entsprechende Untersuchungen einleiten.

    Hinweis:

    Dieser Wert wird jedes Mal auf 0 (null) zurückgesetzt, wenn der IIS-Host (Internetinformationsdienste) neu gestartet wird.

  • Ausgeführte Anwendungen
    Die Anzahl der gleichzeitig auf dem Servercomputer ausgeführten Anwendungen.

  • Getrennte Anforderungen
    Die Anzahl der Anforderungen, die aufgrund von Kommunikationsfehlern getrennt wurden.

  • Anforderungen in Warteschlange
    Die Anzahl der Anforderungen, die auf die Verarbeitung durch einen Dienst in der Warteschlange warten. Wenn diese Zahl bei zunehmender Clientlast linear zunimmt, hat der Webservercomputer die Grenze der Anforderungen erreicht, die er gleichzeitig verarbeiten kann. Der als Standard festgelegte Maximalwert für diesen Zähler beträgt 5000. Sie können diese Einstellung in der Datei Machine.config ändern.

  • Anforderungen wurden abgelehnt
    Die Gesamtanzahl der Anforderungen, die aufgrund unzureichender Serverressourcen nicht verarbeitet wurden. Dieser Zähler gibt die Anzahl der Anforderungen wieder, die einen 503 HTTP-Statuscode zurückgeben, der darauf hinweist, dass der Server vollständig ausgelastet ist.

  • Wartezeit der Anforderung
    Die Zeit in Millisekunden, die die zuletzt gesendete Anforderung in der Warteschlange auf eine Verarbeitung wartet.

  • Gesamtanzahl der Statusserververbindungen
    Die Gesamtanzahl von Sitzungszustandsverbindungen mit dem dem Computer, auf dem prozessexterne Sitzungszustandsdaten gespeichert sind. Weitere Informationen finden Sie unter Sitzungszustandsmodi.

  • Gesamtanzahl der SQL Server-Verbindungen
    Die Gesamtanzahl von Sitzungszustandsverbindungen mit der Microsoft SQL Server-Datenbank, in der Sitzungszustandsdaten gespeichert sind. Weitere Informationen finden Sie unter Sitzungszustandsmodi.

  • Abgebrochene Statusserversitzungen
    Die Anzahl der explizit abgebrochenen Benutzersitzungen. Hierbei handelt es sich um Sitzungen, die durch spezifische Benutzeraktionen, z. B. durch das Schließen des Browsers oder das Navigieren zu einer anderen Site, beendet wurden. Dieser Zähler ist nur auf dem Computer verfügbar, auf dem der Statusserverdienst (aspnet_state) ausgeführt wird.

  • Aktive Statusserversitzungen
    Die Anzahl der momentan aktiven Benutzersitzungen. Dieser Zähler ist nur auf dem Computer verfügbar, auf dem der Statusserverdienst (aspnet_state) ausgeführt wird.

  • Abgelaufene Statusserversitzungen
    Die Anzahl der Benutzersitzungen, die aufgrund einer Benutzeraktion nicht mehr aktiv sind. Dieser Zähler ist nur auf dem Computer verfügbar, auf dem der Statusserverdienst (aspnet_state) ausgeführt wird.

  • Statusserversitzungen insgesamt
    Die Anzahl der während der Prozesslebensdauer erstellten Sitzungen. Dieser Zählerwert setzt sich aus Aktive Statusserversitzungen, Abgebrochene Statusserversitzungen und Abgelaufene Statusserversitzungen zusammen. Dieser Zähler ist nur auf dem Computer verfügbar, auf dem der Statusserverdienst (aspnet_state) ausgeführt wird.

  • Workerprozess-Neustarts
    Die Häufigkeit, mit der ein Workerprozess auf dem Servercomputer neu gestartet wurde. Ein Workerprozess kann neu gestartet werden, wenn er unerwartet fehlschlägt oder wenn er beabsichtigt wiederverwendet wird. Wenn dieser Zähler unerwartet zunimmt, sollten Sie so schnell wie möglich eine Überprüfung durchführen.

  • Ausgeführte Workerprozesse
    Die Anzahl der auf dem Servercomputer ausgeführten Workerprozesse.

Leistungsindikatoren für ASP.NET-Anwendungen

ASP.NET unterstützt die in der folgenden Tabelle aufgelisteten Anwendungsleistungsindikatoren. Mit diesen Zählern können Sie die Leistung einer einzelnen Instanz einer ASP.NET-Anwendung überwachen. Für diese Zähler ist eine eindeutige Instanz mit dem Namen __Total__ verfügbar. Diese Instanz fasst Zähler für alle Anwendungen auf einem Webserver zusammen (ähnlich den weiter oben beschriebenen globalen Indikatoren). Die Instanz __Total__ ist immer verfügbar. Wenn aktuell keine Anwendungen auf dem Server ausgeführt werden, wird für die Zähler der Wert 0 angezeigt.

  • Anonyme Anforderungen
    Die Anzahl der Anforderungen mit anonymer Authentifizierung.

  • Anonyme Anforderungen/Sek.
    Die Anzahl der Anforderungen pro Sekunde, die mit einer anonymen Authentifizierung abgesetzt wurden.

  • Cacheeinträge gesamt
    Die Gesamtanzahl der Einträge im Cache. Dieser Zähler umfasst sowohl die Cacheverwendung durch das ASP.NET-Seitenframework als auch die Verwendung des Anwendungscaches durch Cache-APIs.

  • Cachetreffer gesamt
    Die Gesamtanzahl der Treffer im Cache. Dieser Zähler umfasst sowohl die Cacheverwendung durch das ASP.NET-Seitenframework als auch die Verwendung des Anwendungscaches durch Cache-APIs.

  • Fehlgeschlagene Cachezugriffe gesamt
    Die Anzahl der fehlgeschlagenen Cacheanforderungen pro Anwendung. Dieser Zähler umfasst sowohl die Cacheverwendung durch das ASP.NET-Seitenframework als auch die Verwendung des Anwendungscaches durch Cache-APIs.

  • Cache-Trefferrate gesamt
    Das Verhältnis zwischen Treffern und fehlgeschlagenen Cachezugriffen. Dieser Zähler umfasst sowohl die Cacheverwendung durch das ASP.NET-Seitenframework NET als auch die Verwendung des Anwendungscaches durch Cache-APIs.

  • Gesamte Cacheturnoverrate
    Die Anzahl der Cache-Zugänge und -Abgänge pro Sekunde. Sie ist hilfreich, um zu bestimmen, wie effizient der Cache genutzt wird. Wenn die Turnoverrate hoch ist, wird der Cache nicht effizient genutzt.

  • Cache-API-Einträge
    Die Gesamtanzahl der Einträge im Anwendungscache.

  • Cache-API-Treffer
    Die Gesamtanzahl der Cachetreffer, wobei lediglich Zugriffe über externe Cache-APIs berücksichtigt werden. Dieser Zähler verfolgt nicht die Verwendung des Caches durch das ASP.NET-Seitenframework.

  • Fehlgeschlagene Cache-API-Zugriffe
    Die Gesamtanzahl der fehlgeschlagenen Cacheanforderungen, wobei lediglich Zugriffe über externe Cache-APIs berücksichtigt werden. Dieser Zähler verfolgt nicht die Verwendung des Caches durch das ASP.NET-Seitenframework.

  • Cache-API-Trefferrate
    Das Verhältnis zwischen Treffern und fehlgeschlagenen Cachezugriffen beim Zugriff über externe Cache-APIs. Dieser Zähler verfolgt nicht die Verwendung des Caches durch das ASP.NET-Seitenframework.

  • Turnoverrate für Cache-API
    Die Anzahl der dem Cache pro Sekunde hinzugefügten und daraus entfernten Elemente bei der Verwendung durch die externen APIs (die Verwendung durch das ASP.NET-Seitenframework ist hiervon ausgeschlossen). Anhand dieses Zählers kann festgestellt werden, wie effizient der Cache genutzt wird. Wenn die Turnoverrate hoch ist, wird der Cache nicht effizient genutzt.

  • Kompilierungen insgesamt
    Die Gesamtanzahl der Kompilierungen, die während der Lebensdauer des aktuellen Webserverprozesses stattgefunden haben. Eine Kompilierung tritt auf, wenn eine Datei mit der Dateinamenerweiterung .aspx, .asmx, .ascx oder .ashx bzw. eine Code-Behind-Quelldatei dynamisch auf dem Server kompiliert wird.

    Diese Zahl steigt anfangs auf einen Spitzenwert, wenn Anforderungen an alle Teile einer Anwendung erfolgen. Sobald eine Kompilierung stattfindet, wird die kompilierte Ausgabe jedoch auf dem Datenträger gespeichert und wiederverwendet, bis die Quelldatei geändert wird. Dies bedeutet, dass der Zähler selbst im Falle eines Prozessneustarts auf 0 (inaktiv) bleiben kann, bis die Anwendung geändert oder erneut bereitgestellt wird.

  • Debug-Anforderungen
    Die Anzahl der Anforderungen, die bei aktiviertem Debugmodus auftreten.

  • Fehler bei der Vorverarbeitung
    Die Anzahl der Fehler, die während der Analyse aufgetreten sind, ohne Kompilierungs- und Laufzeitfehler.

  • Fehler bei der Kompilierung
    Die Anzahl der Fehler, die während der dynamischen Kompilierung aufgetreten sind, ohne Analyse- und Laufzeitfehler.

  • Fehler beim Ausführen
    Die Gesamtanzahl der Fehler, die bei der Ausführung einer HTTP-Anforderung aufgetreten sind, ohne Analyse- und Kompilierungsfehler.

  • Unbehandelte Fehler beim Ausführen
    Die Gesamtanzahl der nicht behandelten Fehler, die bei der Ausführung von HTTP-Anforderungen aufgetreten sind. Ein unbehandelter Fehler ist jede Laufzeitausnahme, die nicht vom Benutzercode abgefangen wird und die interne ASP.NET-Fehlerbehandlungslogik erreicht. Folgende Fälle stellen eine Ausnahme von dieser Regel dar:

    • Benutzerdefinierte Fehler sind aktiviert, und/oder es wurde eine Fehlerseite definiert.

    • Das Page_Error-Ereignis ist im Benutzercode definiert, und der Fehler wird entweder (mit der ClearError-Methode) gelöscht, oder es findet eine Umleitung statt.

  • Unbehandelte Fehler während der Ausführung pro Sekunde
    Die Gesamtanzahl der nicht behandelten Ausnahmen pro Sekunde, die bei der Ausführung von HTTP-Anforderungen aufgetreten sind.

  • Fehler gesamt
    Die Gesamtanzahl der Fehler, die bei der Ausführung einer HTTP-Anforderung aufgetreten sind, einschließlich aller Analyse-, Kompilierungs- und Laufzeitfehler. Dieser Zähler bildet den Gesamtwert aus den Zählern Fehler bei der Kompilierung, Fehler bei der Vorverarbeitung und Fehler beim Ausführen. Ein ordnungsgemäß funktionierender Webserver sollte keine Fehler erzeugen. Wenn Fehler in der ASP.NET-Webanwendung auftreten, können dadurch alle Durchsatzergebnisse verzerrt werden, denn es werden sehr unterschiedliche Codepfade zur Fehlerbehebung verwendet. Analysieren und beheben Sie vor dem Ausführen von Leistungstests sämtliche Fehler in der Anwendung.

  • Fehler gesamt/Sek.
    Die Anzahl der Fehler pro Sekunde, die bei der Ausführung einer HTTP-Anforderung aufgetreten sind, einschließlich aller Analyse-, Kompilierungs- und Laufzeitfehler.

  • Ausgabecacheeinträge
    Die Gesamtanzahl der Einträge im Ausgabecache.

  • Ausgabecachetreffer
    Die Gesamtanzahl der Anforderungen, die aus dem Ausgabecache bedient wurden.

  • Fehlgeschlagene Ausgabecache-Zugriffe
    Die Anzahl der fehlgeschlagenen Ausgabecacheanforderungen pro Anwendung.

  • Ausgabecache-Trefferrate
    Der prozentuale Anteil der Anforderungen, die insgesamt aus dem Ausgabecache bedient wurden.

  • Turnoverrate für den Ausgabecache
    Die Anzahl der dem Ausgabecache pro Sekunde hinzugefügten und daraus entfernten Elemente. Wenn die Turnoverrate hoch ist, wird der Cache nicht effizient genutzt.

  • Pipeline-Instanzenzahl
    Die Anzahl der aktiven Anforderungspipelineinstanzen für die angegebene ASP.NET-Anwendung. Da in einer Pipelineinstanz nur ein Ausführungsthread ausgeführt werden kann, gibt diese Zahl die maximale Anzahl von gleichzeitig für eine bestimmte Anwendung verarbeiteten Anforderungen an. In den meisten Fällen ist für diese Zahl unter Last ein niedriger Wert vorzuziehen, denn er gibt an, dass die CPU effizient ausgelastet wird.

  • Anforderungsbytes gesamt (einschließl.)
    Das Gesamtvolumen aller Anforderungen in Bytes.

  • Anforderungsbytes gesamt (ausschließl.)
    Das Gesamtvolumen der an einen Client gesendeten Antworten in Bytes. HTTP-Antwortheader sind hiervon ausgenommen.

  • Ausgeführte Anforderungen
    Die Anzahl der derzeit ausgeführten Anforderungen.

  • Fehlgeschlagene Anforderungen
    Die Gesamtanzahl der fehlgeschlagenen Anforderungen. Alle Statuscodes, die größer als oder gleich 400 sind, führen zu einer Erhöhung dieses Zählers.

    Anforderungen, die den Statuscode 401 auslösen, erhöhen diesen Zähler und den Nicht berechtigte Anforderungen-Zähler. Anforderungen, die einen Statuscode 404 oder 414 auslösen, führen zu einer Erhöhung bei diesem Zähler und beim Zähler Nicht gefundene Anforderungen. Anforderungen, die den Statuscode 500 auslösen, erhöhen diesen Zähler und den Anforderungen mit Zeitüberschreitung-Zähler.

  • Nicht gefundene Anforderungen
    Die Anzahl der Anforderungen, die fehlgeschlagen sind, da keine Ressourcen gefunden wurden (Statuscode 404 oder 414).

  • Nicht berechtigte Anforderungen
    Die Anzahl der Anforderungen, die fehlgeschlagen sind, da sie nicht autorisiert waren (Statuscode 401).

  • Erfolgreiche Anforderungen
    Die Anzahl der Anforderungen, die erfolgreich ausgeführt wurden (Statuscode 200).

  • Anforderungen mit Zeitüberschreitung
    Die Anzahl der Anforderungen mit Zeitüberschreitung (Statuscode 500).

  • Anforderungen gesamt
    Die Gesamtanzahl der seit dem Start des Dienstes ausgeführten Anforderungen.

  • Anforderungen/s
    Die Anzahl der pro Sekunde ausgeführten Anforderungen. Dieser Wert stellt den aktuellen Durchsatz der Anwendung dar. Bei konstanter Belastung sollte diese Zahl innerhalb eines bestimmten Bereichs bleiben und dadurch andere Servervorgänge ausschließen (z. B. Garbage Collection, Cache-Bereinigungsthread, externe Servertools usw.).

  • Aktive Sitzungen
    Die Anzahl der momentan aktiven Sitzungen. Dieser Zähler wird nur bei Verwaltung des Sitzungszustands im Arbeitsspeicher unterstützt.

  • Abgebrochene Sitzungen
    Die Anzahl der explizit abgebrochenen Sitzungen. Dieser Zähler wird nur bei Verwaltung des Sitzungszustands im Arbeitsspeicher unterstützt.

  • Sitzungen mit Zeitüberschreitung
    Die Anzahl der Sitzungen, die das Zeitlimit überschritten haben. Dieser Zähler wird nur bei Verwaltung des Sitzungszustands im Arbeitsspeicher unterstützt.

  • Sitzungen gesamt
    Die Gesamtzahl von Sitzungen. Dieser Zähler wird nur bei Verwaltung des Sitzungszustands im Arbeitsspeicher unterstützt.

  • Abgebrochene Transaktionen
    Die Anzahl abgebrochener Transaktionen für alle aktiven ASP.NET-Anwendungen.

  • Übermittelte Transaktionen
    Die Anzahl ausgeführter Transaktionen für alle aktiven ASP.NET-Anwendungen.

  • Ausstehende Transaktionen
    Die Anzahl laufender Transaktionen für alle aktiven ASP.NET-Anwendungen.

  • Transaktionen gesamt
    Die Gesamtzahl der Transaktionen für alle aktiven ASP.NET-Anwendungen.

  • Transaktionen/Sek
    Die Anzahl der pro Sekunde gestarteten Transaktionen für alle aktiven ASP.NET-Anwendungen.

Siehe auch

Konzepte

Übersicht über die Leistung

Leistungsprobleme beim Migrieren von ASP zu ASP.NET

Überwachen der ASP.NET-Anwendungsleistung

Weitere Ressourcen

ASP.NET-Zwischenspeicherung