Suchen und Diagnostizieren von Leistungsproblemen mit Application Insights

Application Insights erfasst die Telemetriedaten Ihrer Anwendung, um die Funktion und die Leistung zu analysieren. Sie können mit diesen Informationen ggf. Probleme identifizieren oder Verbesserungen für die Anwendung entwerfen, die eine breite Benutzergruppe erreichen würden. In diesem Tutorial lernen Sie den Prozess kennen, in dem die Leistung der Serverkomponenten der Anwendung und die Perspektive des Clients analysiert wird.

Folgendes wird vermittelt:

  • Ermitteln Sie die Leistung serverseitiger Vorgänge.
  • Analysieren Sie Servervorgänge zur Grundursachenermittlung von Leistungseinbußen.
  • Ermitteln Sie die langsamsten clientseitigen Vorgänge.
  • Analysieren Sie Details der Seitenansichten mit der Abfragesprache.

Voraussetzungen

Für dieses Tutorial benötigen Sie Folgendes:

  • Installieren Sie Visual Studio 2019 mit den folgenden Workloads:
    • ASP.NET und Webentwicklung
    • Azure-Entwicklung
  • Bereitstellen einer .NET-Anwendung in Azure und Aktivieren des Application Insights SDK
  • Aktivieren Sie Application Insights Profiler für Ihre Anwendung.

Anmelden bei Azure

Melden Sie sich beim Azure-Portal an.

Identifizieren langsamer Servervorgänge

Application Insights erfasst die Leistungsdetails der verschiedenen Vorgänge in Ihrer Anwendung. Durch Identifizieren der Vorgänge mit der längsten Dauer können Sie potenzielle Probleme diagnostizieren oder die aktuelle Entwicklung auf die Verbesserung der allgemeinen Leistung der Anwendung ausrichten.

  1. Klicken Sie auf Application Insights, und wählen Sie anschließend Ihr Abonnement aus.

  2. Um den Bereich Leistung zu öffnen, wählen Sie entweder im Menü Untersuchen die Option Leistung oder das Diagramm Serverantwortzeit aus.

    Screenshot der Anzeige „Leistung“.

  3. Der Bildschirm Leistung zeigt die Anzahl und durchschnittliche Dauer der einzelnen Anwendungsvorgänge an. Mit diesen Informationen können Sie die Vorgänge ermitteln, die die größten Auswirkungen auf Benutzer haben. In diesem Beispiel sind GET Customers/Details und GET Home/Index aufgrund der relativ hohen Dauer und der Anzahl der Aufrufe auffällige Vorgänge. Andere Vorgänge dauern möglicherweise länger, wurden aber nur selten aufgerufen. Der Effekt einer Verbesserung wäre daher minimal.

    Screenshot des Bereichs „Leistung“.

  4. Das Diagramm zeigt derzeit die durchschnittliche Dauer der ausgewählten Vorgänge im Zeitverlauf an. Sie können zum 95. Perzentil wechseln, um die Leistungsprobleme zu ermitteln. Fügen Sie die für Sie interessanten Vorgänge hinzu, indem Sie sie dem Diagramm anheften. Das Diagramm verdeutlicht, dass es einige Spitzen gibt, die eine Untersuchung wert sind. Um sie weiter zu isolieren, reduzieren Sie das Zeitfenster des Diagramms.

    Screenshot der Anheftungsvorgänge.

  5. Im Leistungsbereich auf der rechten Seite sehen Sie die Verteilung der Dauer der verschiedenen Anforderungen für den ausgewählten Vorgang. Reduzieren Sie das Fenster, um etwa beim 95. Perzentil zu beginnen. Auf der Insights-Karte 3 Hauptabhängigkeiten sehen Sie auf einen Blick, dass die externen Abhängigkeiten wahrscheinlich zu einer langsamen Ausführung der Transaktionen beitragen. Wählen Sie die Schaltfläche mit der Anzahl von Beispielen aus, um eine Liste der Beispiele anzuzeigen. Wählen Sie anschließend ein beliebiges Beispiel aus, um Transaktionsdetails anzuzeigen.

  6. Sie sehen auf einen Blick, dass der Aufruf der Azure Table-Instanz „Fabrikamaccount“ am meisten zur Gesamtdauer der Transaktion beiträgt. Darüber hinaus können Sie erkennen, dass eine Ausnahme zu einem Fehler geführt hat. Wählen Sie ein beliebiges Element in der Liste aus, um seine Details auf der rechten Seite anzuzeigen.

    Screenshot: End-to-End-Transaktionsdetails des Vorgangs.

  7. Der Profiler unterstützt Sie bei der Diagnose auf Codeebene: Er zeigt den tatsächlichen Code, der für den Vorgang ausgeführt wurde, und den Zeitaufwand für die einzelnen Schritte an. Einige Vorgänge haben möglicherweise keine Ablaufverfolgung, da der Profiler in regelmäßigen Abständen ausgeführt wird. Im Laufe der Zeit sollten weitere Vorgänge aber Ablaufverfolgungen erhalten. Um den Profiler für den Vorgang zu starten, wählen Sie Profiler-Ablaufverfolgungen aus.

  8. Die Ablaufverfolgung zeigt die einzelnen Ereignisse für jeden Vorgang an, damit Sie die Grundursache für die Dauer des gesamten Vorgangs diagnostizieren können. Wählen Sie eines der wichtigsten Beispiele mit der längsten Dauer aus.

  9. Wählen Sie Langsamster Pfad aus, um den Pfad der Ereignisse zu markieren, die am meisten zur Gesamtdauer des Vorgangs beitragen. In diesem Beispiel können Sie sehen, dass der langsamste Aufruf von der Methode FabrikamFiberAzureStorage.GetStorageTableData stammt. Der Teil, der den Großteil der Zeit beansprucht, ist die Methode CloudTable.CreateIfNotExist. Wenn diese Codezeile bei jedem Aufruf der Funktion ausgeführt wird, werden unnötige Netzwerkaufruf- und CPU-Ressourcen verbraucht. Die beste Möglichkeit zum Korrigieren des Codes besteht darin, diese Zeile in eine Startmethode einzufügen, die nur einmal ausgeführt wird.

    Screenshot der Profilerdetails.

  10. Der Leistungstipp oben im Bildschirm belegt die Einschätzung, dass die hohe Dauer der Wartezeit geschuldet ist. Wählen Sie den Link Warten aus, um die Dokumentation zu den verschiedenen Ereignistypen aufzurufen.

    Screenshot: Leistungstipp.

  11. Für eine weiterführende Analyse können Sie Ablaufverfolgung herunterladen auswählen und die Ablaufverfolgung herunterladen. Sie können diese Daten mit PerfView anzeigen.

Verwenden von Protokolldaten für den Server

Protokolle bieten eine umfangreiche Abfragesprache, mit der Sie alle von Application Insights erfassten Daten analysieren können. Sie können mit diesem Feature tiefgehende Analysen von Anforderungs- und Leistungsdaten ausführen.

  1. Kehren Sie zum Bereich mit den Vorgangsdetails zurück, und wählen Sie ProtokollsymbolIn Protokollen anzeigen (Analytics) aus.

  2. Der Bildschirm Protokolle wird mit einer Abfrage für jede der Ansichten im Bereich geöffnet. Sie können diese Abfragen ohne weitere Veränderungen ausführen oder sie Ihren Anforderungen entsprechend ändern. Die erste Abfrage zeigt die Dauer dieses Vorgangs im Zeitverlauf an.

    Screenshot einer neuen Protokolleabfrage.

Identifizieren langsamer Clientvorgänge

Zusätzlich zum Ermitteln von optimierbaren Serverprozessen kann Application Insights die Perspektive des Clientbrowsers analysieren. Mit diesen Informationen können Sie nicht nur mögliche Verbesserungen an Clientkomponenten, sondern auch Probleme mit verschiedenen Browsern oder verschiedenen Standorten identifizieren.

  1. Wählen Sie Browser unter Untersuchen und dann Browserleistung aus. Alternativ können Sie die Option Leistung unter Untersuchen auswählen und durch Auswahl der Schaltfläche Server/Browser in der oberen rechten Ecke zur Registerkarte Browser wechseln, um die Zusammenfassung der Browserleistung zu öffnen. Diese Ansicht ist eine grafische Zusammenfassung der verschiedenen Telemetrien Ihrer Anwendung aus der Perspektive des Browsers.

    Screenshot: Browserzusammenfassung.

  2. Wählen Sie einen der Vorgangsnamen, die blaue Schaltfläche Beispiele unten rechts und dann einen Vorgang aus. Auf der rechten Seite werden die End-to-End-Transaktionsdetails geöffnet, wo Sie die Seitenansichtseigenschaften anzeigen können. Sie können die Details zum Client anzeigen, der die Seite anfordert, z. B. den Browsertyp und dessen Speicherort. Diese Informationen können Ihnen dabei helfen, zu bestimmen, ob Leistungsprobleme mit bestimmten Clienttypen zu tun haben.

    Screenshot, der Seitenansichtseigenschaften anzeigt.

Verwenden von Protokolldaten für den Client

Auf die gleiche Weise wie bei den für die Serverleistung gesammelten Daten stellt Application Insights alle Clientdaten für tiefgehende Analysen mithilfe von Protokollen zur Verfügung.

  1. Kehren Sie zur Browserzusammenfassung zurück, und wählen Sie Protokollsymbol in Protokollen (Analyse) anzeigen aus.

  2. Der Bildschirm Protokolle wird mit einer Abfrage für jede der Ansichten im Bereich geöffnet. Die erste Abfrage zeigt die Dauer für verschiedene Seitenansichten im Zeitverlauf an.

    Screenshot des Bildschirms „Protokolle“.