Heim >Backend-Entwicklung >C#.Net-Tutorial >Eine Einführung in die ASP.NET-Leistungsüberwachung und -optimierung

Eine Einführung in die ASP.NET-Leistungsüberwachung und -optimierung

巴扎黑
巴扎黑Original
2017-04-29 17:26:031233Durchsuche

Wichtige Punkte:

  • Infrastrukturmetriken sind nur dann am effektivsten, wenn sie mit Anwendungsmetriken verknüpft sind.

  • Der Schlüssel zur effizienten Leistungsoptimierung liegt in Leistungsdaten.

  • Einige APM-Tools bieten sofort einsatzbereite Unterstützung für ASP.NET, sodass für den Einstieg in ASP.NET nur eine minimale Ersteinrichtung erforderlich ist.

  • Code-Analysetools bieten den detailliertesten Überblick über die Programmleistung.

  • Das leichte Analysetool bietet einen Echtzeitüberblick über die Webseitenleistung und kann sowohl in Entwicklungs- als auch in Produktionsumgebungen verwendet werden.

„Diese Webseite öffnet sich zu langsam!“ Diese Beschwerde über Websites ist häufig und weit verbreitet, insbesondere seit Web-Anwendungen begonnen haben, Desktop-Anwendungen nach und nach zu ersetzen. Obwohl das Web ideale Funktionen wie die globale Bereitstellung mit sich bringt, bringt es auch entsprechende Herausforderungen auf Leistungsebene mit sich.

Grundprinzipien der Datenerhebung und -nutzung

Der Benutzer hat Ihnen die URL einer „langsamen“ Webseite angegeben. Was sollten Sie also tun? Woher kommt das Problem des langsamen Öffnens von Webseiten? War es von Anfang an so langsam? Ist es für alle Benutzer langsam? Es gibt viele Probleme wie dieses, die angegangen werden müssen, um das Problem des langsamen Öffnens von Webseiten zu lösen und sicherzustellen, dass sie nach einer Woche nicht wieder langsamer werden.

Obwohl Sie im Internet nach Informationen zur Leistungsoptimierung suchen können, geht es in der Regel um bestimmte Themen wie Jit, Garbage Collection, SQL-Abfrageoptimierung, ORM-Traps usw. Angesichts der verlockenden Aussicht, Optimierungen umzusetzen, stellt sich die Frage: Woher wissen Sie, dass die gewählte Optimierungsmethode tatsächlich gute Ergebnisse für Ihr aktuelles Leistungsproblem liefert?

Es besteht kein Zweifel, dass dieser Arbeit etwas fehlt. Wir brauchen Wege, um Leistungsprobleme nachhaltig zu finden. Mit diesem Ansatz können wir langsamere Teile des Systems identifizieren und verfügen über konkrete Maßnahmen zur Unterstützung unserer Diagnose von Leistungsproblemen. Sobald wir verstehen, wo die Leistungsprobleme liegen, können wir weiter bestimmen, ob Leistungsverbesserungen erforderlich sind, und all dies den Stakeholdern erklären.

Bei den oben genannten Leistungsproblemen ist eine genaue Identifizierung eine effektivere Möglichkeit, mit ihnen umzugehen. Das Problem liegt möglicherweise gar nicht erst am langsamen Laden der Webseite. Bei Zeitüberschreitungen (z. B. wartet der Load Balancer möglicherweise mehrere Sekunden, bevor er die Verbindung bedient) ist es unmöglich zu sagen, ob es sich um ein Deadlock-Problem oder ein Problem mit einer langsamen Antwortzeit handelt, da beide Probleme dasselbe verursachen. Das Ergebnis ist a Time-out. Dazu sind Daten erforderlich, um die wahre Ursache des Problems zu finden.

Um zu veranschaulichen, wie wichtig es ist, Leistungsprobleme genau zu identifizieren, finden Sie hier einige mögliche Fehlerbehebungspunkte, die zu einer langsamen Reaktion in Webanwendungen führen:

  • JavaScript reagiert langsam;


  • Beim Laden der Ressource kommt es zu einer Blockade.


  • Auf der Client-Seite gibt es einen Proxy; DNS-Problem;


  • ISP- oder Netzwerkproblem;


  • Switches und Router;


  • Lastausgleicher;


  • Anwendungscode (einschließlich Softwarebibliotheken von Drittanbietern);


  • HTTP-Server (z. B. manchmal ASP.net oder IIS);


  • Dienste von Drittanbietern, wie zum Beispiel: Zahlungsdienstleister, Kartendienstleister usw.;


  • Subsysteme, einschließlich: SQL Server, Redis, Elasticsearch, Rabbit MQ usw.

  • Je nach Komplexität und Größe des zu behebenden Systems können weitere Punkte zur Fehlerbehebung aufgeführt werden. Wie können Sie Leistungsprobleme diagnostizieren, wenn so viele Systemkomponenten Probleme bei der Leistungsoptimierung beeinträchtigen können? Die Antwort lässt sich in einem Wort zusammenfassen: Daten. Sie benötigen relevante und aussagekräftige Daten von jeder Systemkomponente. Für das Problem der langsamen Reaktion von Webanwendungen können Daten belegen, ob jede Systemkomponente einen Einfluss auf das Problem hat oder völlig irrelevant ist.

    Mit den vorliegenden Daten können Sie beginnen, Fehlerbehebungspunkte aus der obigen Liste gemäß Ihren Vorstellungen für die Analyse zu extrahieren, was einer Suche in einem Sortierbaum ähnelt. Jedes Mal, wenn Sie im Baum eine Ebene nach unten gehen, kommen Sie den Details und dem Wesen des Leistungsproblems näher. Überprüfen Sie, ob das Leistungsproblem besteht in:
  • Clientseitig, serverseitig oder irgendwo dazwischen?

  • Langsames JavaScript, Rendering oder Ressourcenblockierung?


  • Load Balancer, Webserver, irgendein Subsystem oder Software von Drittanbietern?

Wenn Sie in einem solchen Baum Ebene für Ebene nach unten gehen, werden Leistungsprobleme immer deutlicher. Für jede Fehlerbehebungsebene müssen die zur Lokalisierung von Leistungsproblemen erforderlichen Daten mit der Genauigkeit des entsprechenden Problems übereinstimmen. Zu diesem Zeitpunkt ist es notwendig, Tools wie Leistungsanalysetools oder SQL-Ausführungspläne zu verwenden.

Um die Zeit effektiv zu nutzen, ist es notwendig, das Gesetz von Amdahl zu wiederholen:

Unabhängig davon, wie sehr sich eine Aufgabe verbessert, begrenzen die Teile der Aufgabe, die nicht von der Verbesserung profitieren, die theoretischen Aufgabenbeschleunigungen.

Bei einer Webanfrage wird beispielsweise davon ausgegangen, dass 100 Millisekunden Serververarbeitungszeit und 5 Sekunden SQL-Abfragezeit erforderlich sind. Auch wenn Sie die Serververarbeitungszeit auf weniger als 1 Millisekunde optimieren können, ist die Verbesserung der Gesamtantwortzeit gering, von 5,1 Sekunden auf 5 Sekunden. Die zur Verbesserung der SQL-Verarbeitung erforderlichen 5 Sekunden sind die Optimierung mit dem größten potenziellen Gewinn.

Architekturprobleme

Diese Top-Down-Methode zur schichtweisen Klärung von Optimierungsproblemen hat gute Auswirkungen auf Optimierungsprobleme, die auf eine einzelne Seite beschränkt sind. Welchen Effekt hat es also, wenn man es auf Optimierungsprobleme anwendet, die sich über mehrere Seiten erstrecken? Das Problem des zeitweise langsamen Öffnens einiger Seiten liegt beispielsweise daran, dass das Subsystem nicht mit dem gesamten Arbeitsrhythmus mithalten kann oder dass im System ein alter Netzwerk-Switch vorhanden ist, der nach einem Neustart möglicherweise nicht mehr funktioniert.

In diesem Fall zeigt der anwendungsorientierte Überwachungsansatz seine Grenzen. Dies erfordert mehr Metriken auf Software- und Hardwareebene, um jede Komponente im System zu bewerten.

Auf der Hardware-Ebene fallen mir zunächst Webserver und Datenbankserver ein, aber das ist nur die Spitze des Eisbergs. Hardwarekomponenten in allen Systemen müssen identifiziert und überwacht werden. Dazu gehören: Server, Netzwerk-Switches, Router, Load Balancer, Firewalls, SANs usw.

Da die reguläre Aufgabe des Systemadministrators die Hardwareüberwachung ist, können alle oben genannten Indikatoren für den Systemadministrator offensichtlich sein. Aber hier gibt es einen wichtigen Vorbehalt: Die meisten dieser Hardware-Metriken sind aus Leistungssicht nutzlos, wenn sie getrennt von Software-Metriken behandelt werden. Mit anderen Worten: Indikatoren können nur dann am besten funktionieren, wenn sie in der entsprechenden Umgebung platziert werden.

Beispielsweise kann es in manchen Fällen völlig normal sein, dass die CPU-Auslastung auf einem Datenbankserver durchschnittlich 50 % beträgt, bei anderen Servern ist dies jedoch eine tickende Zeitbombe. Eine CPU-Auslastung von 50 % bedeutet in Spitzenzeiten, dass noch viel Platz für die Ausführung schwererer Aufgaben vorhanden ist. Wenn jedoch während Leerlaufzeiten häufig eine CPU-Auslastung von 50 % auftritt, bedeutet dies, dass die Anwendung möglicherweise nicht in der Lage ist, plötzlichen Spitzen bei eingehenden Anforderungen standzuhalten.

Die Quintessenz ist, dass zur Beurteilung des Systemzustands systemweite Metriken wie CPU, Arbeitsspeicher und Festplatte mit Anwendungsmetriken korreliert werden müssen. Um einen umfassenderen Überblick über den Systemzustand zu erhalten, können Anwendungsmetriken wie der Anforderungsdurchsatz und Systemmetriken wie die CPU-Auslastung visualisiert werden.

Application Performance Management (APM)-Tool

APM-Tools bieten grundlegende Vorgänge wie Datenerfassung, Datenspeicherung und Datenvisualisierung. Typischerweise ist ein Agent dafür verantwortlich, Daten zu sammeln und an einen Datenspeicher zu senden und eine Webschnittstelle zu verwenden, um die Daten in einem Dashboard zu visualisieren, das sich auf Webanfragen konzentriert.

​APM kann verwendet werden für:

  • Stellen Sie eine Gesamtvisualisierung der Webanwendungsleistung bereit.


  • Visualisieren Sie die Leistung spezifischer Webanfragen.


  • Senden Sie automatisch Benachrichtigungen, wenn die Leistung der Webanwendung nachlässt oder mehrere Fehler auftreten


  • Wenn das Geschäftsvolumen groß ist, überprüfen Sie den Antwortmodus der Anwendung.

Beispiele finden Sie hier.

Im Folgenden finden Sie eine nicht erschöpfende Liste von APM-Tools, die ASP.NET und IIS standardmäßig unterstützen:

  • NewRelic APM


  • Anwendungseinblicke


  • AppDynamics


  • Stapeln

Tools zur Infrastrukturüberwachung

Tools zur Infrastrukturüberwachung sammeln Metriken auf Hostebene, die die Leistung vollständiger widerspiegeln können. Diese Metriken werden auf Hardware- und Softwareebene erfasst.

  • DataDog


  • OpServer – Open Source

​Leichte Analysetools

Leichte Analysetools liefern High-Level-Metriken für bestimmte Webanfragen und geben Echtzeit-Feedback, während Entwickler Webseiten durchsuchen. Diese Tools können in allen Umgebungstypen verwendet werden (einschließlich Entwicklungsumgebungen, QA-Verifizierung, Staging-Umgebungen, Produktionsumgebungen usw.) und eignen sich daher ideal für die schnelle Bewertung der Leistung bestimmter Seiten.

Im Vergleich zu den entsprechenden Analysetools mit vollem Funktionsumfang besteht der wesentliche Unterschied zwischen Lightweight-Analysetools darin, dass sie nicht an den Prozess gebunden sind, sodass Sie sich bei der Verwendung von Lightweight-Analysetools keine Gedanken über den Overhead machen müssen, den sie erzeugen.

In der Entwicklungsumgebung liefern leichtgewichtige Analysetools Echtzeit-Feedback zum aktuell geschriebenen Code. Dies ist sehr nützlich, um Probleme wie N+1 oder langsame Antwortzeiten zu erkennen, da die Antwortzeiten immer in der Ecke der Seite angezeigt werden.

  • Open-Source-MiniProfiler


  • Open-Source-Einblick

Füllen Sie die Lücken mit Leistungsindikatoren

Leistungsindikatoren in Windows-Systemen liefern unterschiedliche Indikatoren auf Hardware- und Softwareebene. Überwachungstools melden häufig Leistungsindikatoren wie CPU- und Speichernutzung. Aber oft fehlen einige nützliche Zähler, wie z. B. die Garbage Collection-Zeit usw. Der praktischste Einstieg besteht darin, eine Basisliste zu verwenden und in der Iteration die erforderlichen relevanten Zähler hinzuzufügen. Darüber hinaus ist es mit perfmon möglich, Leistungsindikatoren in Echtzeit zu sammeln und zu visualisieren. In vielen Fällen ist es auch möglich, benutzerspezifische Indikatoren oder Plug-Ins mit APM-Tools zu integrieren.

SQL-Tools

Da Datenbanken häufig in vielen Anwendungen verwendet werden, wird die Persistenzschicht (d. h. die SQL-Datenbank) häufig zu einem Leistungsengpass. Professionelle Tools zur SQL-Überwachung können Metriken zur Ressourcennutzung sowie spezifische Metriken wie Wartezeiten, Kompilierungen pro Sekunde usw. bereitstellen, um nur einige zu nennen.

Durch die Bereitstellung der folgenden Daten können einige Arten von Problemen erkannt und die Leistung verbessert werden:

  • Übermäßiger Durchsatz bei einer oder mehreren Abfragen;


  • Übermäßige CPU-Auslastung, was auf Abfrageprobleme oder fehlende Indizes hindeutet;


  • Abfragen mit hohem Durchsatz, die zwischengespeichert werden können.

Zu den SQL-Überwachungstools gehören:

  • RedGate SQL Monitor


  • SQLSentry Performance Advisor

Andere Persistenzsysteme

Alle Subsysteme müssen in gewissem Umfang überwacht werden. Für Systeme mit geringem Durchsatz oder unkritischen Systemen reicht eine einfache Datenerfassung und -visualisierung aus. In anderen Fällen ist eine weitergehende, professionelle Überwachung erforderlich.

Code-Analysetool

Wenn eine bestimmte Seite oder ein bestimmter Codeabschnitt als langsam identifiziert wurde, können Codeanalysetools eine möglichst detaillierte Ansicht zur Identifizierung von Leistungsproblemen liefern. Code-Analyse-Tools ermöglichen auch eine genaue Sicht auf externe Aufrufe wie Datenbankabfragen und Webanfragen.

Analysetools:

  • Redgate Ameisen


  • JetBrains dotTrace

Speicheranalysetool

Speicherüberwachungs- und Garbage-Collection-Metriken helfen dabei, potenzielle Probleme zu erkennen. Doch obwohl diese Indikatoren darauf hinweisen, dass ein Problem vorliegt, sagen sie oft nicht, wo das Problem liegt. Wenn Sie sich eingehender mit Speicher- und Garbage-Collection-Problemen befassen müssen, können Speicheranalysetools hilfreich sein.

Analysetools:

  • JetBrains dotMemory


  • RedGate Ants Memory Profiler

Tools zur Kundenanalyse

Leistungsprobleme können auch vom Frontend herrühren. Dieses Problem tritt heutzutage aufgrund der zunehmenden Verbreitung von Single-Page-Anwendungen, die auf JavaScript basieren, sehr häufig auf. Alle gängigen Browser verfügen über eingebettete Tools wie Code-Analyse und Speicheranalyse. Mithilfe von Tools, die die Abfolge von Ereignissen und Anfragen anzeigen, lässt sich auf einen Blick erkennen, ob ein Problem vom Frontend oder Backend herrührt.

Werkzeuge:

  • Google Chrome-Timeline


  • Firefox

Seitenanalysetool

High-Level-Client-Tools bieten einen praktischen Ausgangspunkt für die Identifizierung und Lösung von Leistungsproblemen. Diese Tools können einen umfassenden Überblick über die Grundursachen von Reaktionszeitproblemen bieten und einige entsprechende Empfehlungen geben. Beispielsweise ist PageSpeed ​​Insights von Google ein solches kostenloses Tool.

Es gibt so viele Faktoren und Tools im Zusammenhang mit der Systemleistung, dass es kompliziert erscheinen mag. Aber sie lassen sich in einem Wort zusammenfassen: Daten. Eine klare und genaue Sicht auf das System ermöglicht es, über Leistungsprobleme nachzudenken. Auf diese Weise erfahren Sie auch, wie Sie Leistungsprobleme sofort beheben können, da Sie mithilfe von Leistungsmetriken und Diagrammen herausfinden können, was genau die Systemleistung beeinträchtigt.

Das obige ist der detaillierte Inhalt vonEine Einführung in die ASP.NET-Leistungsüberwachung und -optimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn