Freigeben über


Überwachen und Analysieren des Laufzeitverhaltens mit Code Optimizations

Das Diagnostizieren von Leistungsproblemen kann schwierig sein – insbesondere, wenn Ihre Anwendung in einer Produktionsumgebung in der dynamischen Cloud ausgeführt wird. Langsame Antworten in Ihrer Anwendung können durch die Infrastruktur, das Framework oder den Anwendungscode verursacht werden, der die Anforderung in der Pipeline verarbeitet.

Code Optimizations, ein KI-basierter Dienst in Azure Application Insights, arbeitet mit dem Application Insights Profiler für .NET zusammen, um CPU- und Speichernutzungsprobleme auf Code-Ebene zu erkennen und Empfehlungen zu deren Behebung zu geben.

Treffen Sie fundierte Entscheidungen und optimieren Sie Ihren Code anhand von Leistungsdaten in Echtzeit und Erkenntnissen aus Ihrer Produktionsumgebung.

Sie können Ihre Codeoptimierungen im Azure-Portal überprüfen.

Codeoptimierungen und Application Insights Profiler für .NET

Der .NET-Profiler und Code Optimizations arbeiten zusammen, um einen ganzheitlichen Ansatz für die Erkennung von Leistungsproblemen bereitzustellen.

Code-Optimierungen

Codeoptimierungen identifiziert, analysiert und löst die vom Application Insights Profiler für .NET gesammelten Profilerstellungsdaten auf. Da der .NET Profiler Daten in Application Insights hochlädt, analysiert unser Machine Learning-Modell einige der Daten, um zu ermitteln, wo der Code der Anwendung optimiert werden kann. Code-Optimierungen:

  • Zeigt aggregierte Daten an, die im Laufe der Zeit gesammelt wurden.
  • Verknüpft Daten mit den Methoden und Funktionen in Ihrem Anwendungscode.
  • Grenzt den Schuldigen ein, indem Engpässe im Code gefunden werden.
  • Stellt Leistungskorrekturen auf Codeebene basierend auf Erkenntnissen bereit.

Ermitteln

Auf der Konsolidierten Übersichtsseite "Codeoptimierungen" können Sie alle Empfehlungen zur Codeoptimierung in Ihren Azure-Abonnements und Application Insights-Ressourcen im Azure-Portal anzeigen. Identifizieren Sie Engpässe in Ihrem Code, und überprüfen Sie Empfehlungen auf Codeebene für Entwicklungs-, Test-, Vorproduktions- und Produktionsumgebungen.

Analysieren

Nachdem die Daten Ihrer Umgebung gesammelt wurden, bietet Codeoptimierungen stündlich Empfehlungen auf Codeebene. Standardmäßig zeigt die aggregierte Datenansicht ein rollierendes 24-Stunden-Fenster mit kürzlich identifizierten Problemen mit einem 30-Tage-Verlauf an, in dem Sie frühere Ereignisse überprüfen und analysieren können.

Beheben

Nachdem Sie die Ergebnisse der Codeoptimierung identifiziert und analysiert haben, können Sie diese Probleme in Ihrem Code mithilfe der Codeoptimierungserweiterungen Visual Studio und Visual Studio Code beheben. Mit diesen Erweiterungen können Sie mit GitHub Copilot interagieren, um eine Code-Korrektur zu erhalten, die auf Erkenntnissen der Codeoptimierung basiert.

Sie können auch ein GitHub-Problem über die Seite "Codeoptimierungen" im Azure-Portal erstellen und es dem GitHub Copilot-Codierungs-Agent zuweisen. Von dort aus öffnet GitHub Copilot ein Pull Request und pusht Codeänderungen basierend auf Codeoptimierungserkenntnissen.

Demovideo

Application Insights Profiler für .NET

Der .NET-Profiler konzentriert sich auf die Nachverfolgung bestimmter Anforderungen bis in den Millisekundenbereich. Das Tool bietet einen hervorragenden Überblick über Probleme in Ihrer Anwendung und stellt allgemeine Best Practices vor, um diese zu beheben.

Mit Application Insights Profiler for .NET können Sie Leistungsablaufverfolgungen für Ihre in Azure ausgeführte Anwendung unabhängig vom Szenario erfassen, identifizieren und anzeigen. Der .NET Profiler-Überwachungsprozess erfolgt automatisch im großen Stil und wirkt sich auf Ihre Benutzer nicht negativ aus. Der .NET Profiler identifiziert Folgendes:

  • Die mittleren, schnellsten und langsamsten Antwortzeiten für jede Web-Anforderung Ihrer Kunden.
  • Der „heiße“ Codepfad, der bei der Verarbeitung einer bestimmten Webanforderung die meiste Zeit beansprucht.

Aktivieren Sie den Profiler for .NET für alle Ihre Azure-Anwendungen, um Daten mit den folgenden Auslösern zu sammeln:

  • Samplingtrigger: Startet Profiler zufällig etwa einmal pro Stunde für zwei Minuten.
  • CPU-Trigger: Startet Profiler, wenn der Prozentsatz der CPU-Auslastung über 80 Prozent liegt.
  • Arbeitsspeichertrigger: Startet Profiler, wenn die Arbeitsspeicherauslastung über 80 Prozent liegt.

Jeder dieser Auslöser kann konfiguriert, aktiviert oder deaktiviert werden.

Kosten und Mehraufwand

Codeoptimierungen werden automatisch generiert, nachdem application Insights Profiler für .NET aktiviert wurde. Standardmäßig sammelt Profiler aktiv Ablaufverfolgungen pro Stunde für 30 Sekunden oder in Zeiträumen mit hoher CPU- oder Speicherauslastung für 30 Sekunden. Die stündliche Ablaufverfolgung (als Sampling bezeichnet) eignet sich hervorragend für eine proaktive Optimierung, während die hohen CPU- und Speicherablaufverfolgungen (sogenannte Trigger) für reaktive Problembehandlung hilfreich sind.

Hinweis

Wenn der Application Insights Profiler für .NET aktiv läuft und Traces erfasst, fügt er in der Regel zwischen 5% und 15% CPU- und Arbeitsspeicherbelastung zu Ihrem Server hinzu.

Es fallen keine zusätzlichen Kosten für das Speichern der Daten an, die vom .NET Profiler erfasst werden. Die Daten werden nach 15 Tagen automatisch gelöscht.

Für einige Codeoptimierungsfeatures (z. B. Fehlervorschläge auf Codeebene) ist Copilot für GitHub und/oder Copilot für Azure erforderlich.

Aktivieren von .NET Profiler

Wenn Sich Frameworks und Azure-Dienste entwickeln, können Sie .NET Profiler für Ihre .NET-Apps aktivieren, die auf Azure ausgeführt werden, über eine Reihe von Optionen.

Azure-Dienst So aktivieren Sie Einzelheiten
Die meisten Azure-Dienste Codeänderung in Ihrer Anwendung
(am universellsten)
Wenn Ihre .NET-App auf Varianten von Azure PaaS-Diensten oder -Containern ausgeführt wird, können Sie zwischen zwei Optionen zum Aktivieren von .NET Profiler wählen:
- Application Insights Profiler für ASP.NET Core , der das Application Insights SDK verwendet, oder
- NeuerAzure Monitor OpenTelemetry Profiler für NET (Vorschau), der Azure Monitor OpenTelemetry Distro verwendet
Azure App Service Keine Codeänderung für Ihre Anwendung Da der Profiler vorinstalliert ist, können Sie Profiler für .NET im Portal für Folgendes aktivieren:
- Azure App Service – .NET-App unter Windows
- Azure-Funktionen – App Service-Plan
Virtuelle Computer Keine Codeänderung für Ihre Anwendung Nachdem Sie das Application Insights SDK in Ihrem Anwendungscode aktiviert haben, können Sie den Profiler für .NET in Ihrer ARM-Vorlage aktivieren.
- Azure Virtual Machines und Virtual Machine Scale Sets für Windows
- Azure Service Fabric

Details und Beispiele zum Aktivieren von Profiler für .NET

Hinweis

Sie können auch den Java Profiler für Azure Monitor Application Insights verwenden, derzeit in der Vorschau.

Unterstützte Regionen

Code Optimizations ist in denselben Regionen verfügbar wie Application Insights. Sie können die verfügbaren Regionen mit dem folgenden Befehl überprüfen:

az account list-locations -o table

Mithilfe von Verbindungszeichenfolgen können Sie eine Region explizit festlegen. Lernen Sie anhand von Beispielen, wie Verbindungszeichenfolgen funktionieren.

Einschränkungen

Profilieren von Web-Apps:

  • Obwohl Sie den .NET Profiler ohne zusätzliche Kosten nutzen können, muss Ihre Web-App mindestens im Basic-Tarif des Web-Apps-Features von Azure App Service gehostet werden.
  • Sie können an jede Web-App nur einen Profiler anfügen.

Problembehandlung

Nächste Schritte

Erfahren Sie, wie Sie den .NET Profiler mit Codeoptimierungen in Ihrem Azure-Dienst aktivieren: