Udostępnij przez


Używanie ustawień diagnostycznych opcji JVM na potrzeby zaawansowanego rozwiązywania problemów w usłudze Azure Spring Apps

Uwaga

Plany Basic, Standardi Enterprise weszły w okres wycofywania 17 marca 2025 r. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.

Ten artykuł dotyczy:✅ Java ❎ C#

Ten artykuł dotyczy:✅ Podstawowa/Standardowa ✅ Enterprise

W tym artykule pokazano, jak używać ustawień diagnostycznych za pomocą opcji JVM do przeprowadzania zaawansowanego rozwiązywania problemów w usłudze Azure Spring Apps.

Istnieje kilka parametrów uruchamiania aplikacji JVM związanych z zrzutem sterty, Java Flight Recorder (JFR) i dziennikami zbierania odpadków (GC). W usłudze Azure Spring Apps obsługujemy konfigurację JVM przy użyciu opcji JVM.

Wymagania wstępne

Generowanie zrzutu sterty w przypadku braku pamięci

Użyj następującego --jvm-options parametru, aby wygenerować zrzut stert w przypadku wystąpienia błędu braku pamięci.

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

Alternatywnie do określenia ścieżki do folderu zrzutu sterty, możesz podać określoną nazwę pliku. Jednak zdecydowanie zalecamy podanie ścieżki folderu. Jeśli podasz nazwę pliku, polecenie wygeneruje zrzut sterty tylko dla pierwszego błędu braku pamięci z powodu ograniczeń formatu pliku HPROF. Jeśli podasz ścieżkę folderu, otrzymasz zrzut sterty w pliku z automatycznie wygenerowaną nazwą dla każdego błędu braku pamięci.

Generowanie dzienników GC

Użyj następującego --jvm-options parametru, aby wygenerować dzienniki GC. Aby uzyskać więcej informacji, zobacz oficjalną dokumentację JVM.

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

Generowanie pliku JFR przy zamknięciu

Użyj następującego --jvm-options parametru, aby wygenerować plik JFR. Aby uzyskać więcej informacji, zobacz oficjalną dokumentację JVM.

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

Konfigurowanie ścieżki dla wygenerowanych plików

Aby mieć pewność, że masz dostęp do plików, upewnij się, że ścieżka docelowa wygenerowanego pliku znajduje się w trwałym magazynie powiązanym z aplikacją. Na przykład możesz użyć kodu JSON podobnego do poniższego przykładu podczas tworzenia magazynu trwałego w usłudze Azure Spring Apps.

    {
       "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
              }
          }
       ]
    }

Alternatywnie możesz użyć następującego polecenia, aby dodać do pamięci trwałej.

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>

Następne kroki