Manuelles Erfassen von Heapdump, Threaddump und JFR in Azure Spring Apps

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Java C#

Dieser Artikel gilt für: ✔️ Basic-/Standard-Dienstebene ✔️ Enterprise-Dienstebene

In diesem Artikel wird beschrieben, wie Sie manuell ein Heap- oder Threadabbild generieren und Java Flight Recorder (JFR) starten.

Eine effektive Problembehandlung ist wichtig, um sicherzustellen, dass Sie Probleme in Produktionsumgebungen beheben und die Onlineverfügbarkeit Ihres Unternehmens gewährleisten können. Azure Spring Apps bietet unter anderem Streaming und Abfragen von Anwendungsprotokollen, umfangreiche Metriken, Warnungen und die verteilte Ablaufverfolgung. Wenn Sie jedoch Warnungen zu Anforderungen mit hoher Latenz, JVM-Heapverlust oder hoher CPU-Auslastung erhalten, gibt es keine Lösung für die letzten Schritte. Aus diesem Grund haben wir es Ihnen ermöglicht, manuell ein Heap- oder Threadabbild zu generieren und JFR zu starten.

Voraussetzungen

  • Eine bereitgestellte Azure Spring Apps-Dienstinstanz. Informationen zu den ersten Schritten finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps.
  • Mindestens eine bereits in Ihrer Dienstinstanz erstellte Anwendung.
  • Ihr eigener persistenter Speicher (wie unter Aktivieren des eigenen persistenten Speichers in Azure Spring Apps beschrieben). Dieser Speicher wird verwendet, um generierte Diagnosedateien zu speichern. Die Pfade, die Sie in den unten angegebenen Parameterwerten angeben, sollten sich unter dem Bereitstellungspfad des persistenten Speichers befinden, der an Ihre App gebunden ist. Wenn Sie einen Pfad unter dem Bereitstellungspfad verwenden möchten, müssen Sie den Unterpfad im Voraus erstellen.

Generieren eines Heapdumps

Verwenden Sie den folgenden Befehl, um ein Heapabbild Ihrer App in Azure Spring Apps zu generieren.

az spring app deployment generate-heap-dump \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path>

Generieren eines Threaddumps

Verwenden Sie den folgenden Befehl, um ein Threadabbild Ihrer App in Azure Spring Apps zu generieren.

az spring app deployment generate-thread-dump \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path>

Starten von JFR

Verwenden Sie den folgenden Befehl, um JFR für Ihre App in Azure Spring Apps zu starten.

az spring app deployment start-jfr \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path> \
    --duration <duration-of-JFR>

Der Standardwert für duration beträgt 60 Sekunden.

Generieren eines Abbilds mithilfe des Microsoft Azure-Portals

Verwenden Sie die folgenden Schritte, um ein Heap- oder Threadabbild Ihrer App in Azure Spring Apps zu generieren.

  1. Navigieren Sie im Azure-Portal zu Ihrer Ziel-App, und wählen Sie dann Problembehandlung aus.
  2. Wählen Sie im Bereich Problembehandlung die App-Instanz und den Typ des Abbilds aus, das Sie erfassen möchten.
  3. Geben Sie im Feld Dateipfad den Bereitstellungspfad Ihres persistenten Speichers an.
  4. Wählen Sie Sammeln aus.

Abrufen der Diagnosedateien

Navigieren Sie zum Zieldateipfad in Ihrem persistenten Speicher, und suchen Sie nach „dump/JFR“. Von dort aus können Sie sie auf Ihren lokalen Computer herunterladen. Der Name der generierten Datei ähnelt <app-instance>_heapdump_<time-stamp>.hprof für das Heapabbild, <app-instance>_threaddump_<time-stamp>.txt für das Threadabbild und <app-instance>_JFR_<time-stamp>.jfr für die JFR-Datei.

Nächste Schritte