Freigeben über


Verwenden der Diagnoseeinstellungen von JVM-Optionen für die erweiterte Problembehandlung in Azure Spring Apps

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für:✅️ Java ❎ C#

Dieser Artikel gilt für:✅ Basic/Standard ✅ Enterprise

In diesem Artikel wird beschrieben, wie Sie Diagnoseeinstellungen über JVM-Optionen verwenden, um eine erweiterte Problembehandlung in Azure Spring Apps durchzuführen.

Es gibt mehrere JVM-basierte Anwendungsstartparameter im Zusammenhang mit Heapdump-, Java Flight Recorder- (JFR) und Garbage Collection-Protokollen (GC). In Azure Spring Apps wird die Konfiguration von JVM mithilfe von JVM-Optionen unterstützt.

Weitere Informationen zum Konfigurieren von JVM-basierten Anwendungsstartparametern finden Sie unter az spring app deployment in der Azure CLI-Referenzdokumentation. Die folgenden Abschnitte enthalten mehrere Beispiele für nützliche Werte für den --jvm-options-Parameter.

Voraussetzungen

  • Eine bereitgestellte Azure Spring Apps-Dienstinstanz. Informationen zu den ersten Schritten finden Sie unter Schnellstart: Starten einer Java Spring-Anwendung mit der Azure CLI.
  • 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, wenn nicht genügend Arbeitsspeicher vorhanden ist

Verwenden Sie den folgenden --jvm-options-Parameter, um ein Heapdump zu generieren, wenn ein Fehler aufgrund von nicht genügend Arbeitsspeicher auftritt.

--jvm-options="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path-to-heap-dump-folder>"

Als Alternative zur Angabe des Pfads zum Heapdumpordner können Sie einen bestimmten Dateinamen angeben. Es wird jedoch dringend empfohlen, stattdessen einen Ordnerpfad anzugeben. Wenn Sie einen Dateinamen angeben, generiert der Befehl aufgrund der Einschränkungen des HPROF-Dateiformats nur ein Heapdump für den ersten Fehler aufgrund von nicht genügend Arbeitsspeicher. Wenn Sie einen Ordnerpfad angeben, erhalten Sie ein Heapdump in einer Datei mit einem automatisch generierten Namen für jeden Fehler aufgrund von nicht genügend Arbeitsspeicher.

Generieren von GC-Protokollen

Verwenden Sie den folgenden --jvm-options-Parameter, um GC-Protokolle zu generieren. Weitere Informationen finden Sie in der offiziellen JVM-Dokumentation.

--jvm-options="-XX:+PrintGCDetails -Xloggc:<path-to-GC-log-file>"

Generieren einer JFR-Datei beim Beenden

Verwenden Sie den folgenden --jvm-options-Parameter, um eine JFR-Datei zu generieren. Weitere Informationen finden Sie in der offiziellen JVM-Dokumentation.

--jvm-options="-XX:StartFlightRecording=dumponexit=true,filename=<path-to-JFR-file>"

Konfigurieren des Pfads für generierte Dateien

Damit Sie auf Ihre Dateien zugreifen können, stellen Sie sicher, dass sich der Zielpfad Ihrer generierten Datei im persistenten Speicher befindet, der an Ihre App gebunden ist. Beispielsweise können Sie JSON ähnlich wie im folgenden Beispiel verwenden, wenn Sie Ihren persistenten Speicher in Azure Spring Apps erstellen.

    {
       "customPersistentDisks": [
          {
              "storageName": "<storage-resource-name>",
              "customPersistentDiskProperties": {
                  "type": "AzureFileVolume",
                  "shareName": "<azure-file-share-name>",
                  "mountPath": "<unique-mount-path>",
                  "mountOptions": [
                      "uid=0",
                      "gid=0"
                   ],
                   "readOnly": false
                }
          },
          {
              "storageName": "<storage-resource-name>",
              "customPersistentDiskProperties": {
                  "type": "AzureFileVolume",
                  "shareName": "<azure-file-share-name>",
                  "mountPath": "<unique-mount-path>",
                  "readOnly": true
              }
          }
       ]
    }

Alternativ können Sie für das Anfügen an den persistenten Speicher den folgenden Befehl verwenden:

az spring app append-persistent-storage \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --persistent-storage-type AzureFileVolume \
    --storage-name <storage-resource-name> \
    --share-name <azure-file-share-name> \
    --mount-path <unique-mount-path>

Nächste Schritte