Použití nastavení diagnostiky možností prostředí JVM pro pokročilé řešení potíží v Azure Spring Apps

Poznámka:

Plány Basic, Standarda Enterprise vstoupily do důchodového období 17. března 2025. Další informace najdete v oznámení o vyřazení Azure Spring Apps.

Tento článek se vztahuje na:✅ Java ❎ C#

Tento článek se vztahuje na:✅ Basic/Standard ✅ Enterprise

V tomto článku se dozvíte, jak pomocí nastavení diagnostiky prostřednictvím možností prostředí JVM provádět pokročilé řešení potíží v Azure Spring Apps.

Existuje několik spouštěcích parametrů pro JVM aplikací, které se týkají výpisu haldy, Java Flight Recorder (JFR) a protokolů garbage collection (GC). V Azure Spring Apps podporujeme konfiguraci JVM pomocí možností JVM.

Požadavky

  • Nasazená instance služby Azure Spring Apps Pokud chcete začít, postupujte podle našeho rychlého startu k nasazení aplikace prostřednictvím Azure CLI .
  • Alespoň jedna aplikace již byla vytvořena ve vaší instanci služby.
  • Vlastní trvalé úložiště, jak je popsáno v tématu Jak povolit vlastní trvalé úložiště v Azure Spring Apps. Toto úložiště slouží k ukládání vygenerovaných diagnostických souborů. Cesty, které zadáte v níže uvedených hodnotách parametrů, by měly být pod cestou připojení trvalého úložiště vázaného na vaši aplikaci. Pokud chcete použít cestu pod připojovací cestou, nezapomeňte podcestu vytvořit předem.

Generování výpisu paměti haldy při vyčerpání paměti

Pomocí následujícího --jvm-options parametru vygenerujte výpis paměti haldy, když dojde k chybě nedostatku paměti.

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

Jako alternativu k zadání cesty ke složce výpisu haldy můžete zadat konkrétní název souboru. Důrazně ale doporučujeme místo toho zadat cestu ke složce. Pokud zadáte název souboru, příkaz vygeneruje výpis paměti haldy pouze pro první chybu nedostatku paměti, a to kvůli omezením formátu souboru HPROF. Pokud zadáte cestu ke složce, v souboru se zobrazí výpis paměti haldy s automaticky vygenerovaným názvem pro každou chybu nedostatku paměti.

Generování protokolů GC

K vygenerování protokolů GC použijte následující --jvm-options parametr. Další informace najdete v oficiální dokumentaci k prostředí JVM.

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

Vygenerování souboru JFR při ukončení

K vygenerování souboru JFR použijte následující --jvm-options parametr. Další informace najdete v oficiální dokumentaci k prostředí JVM.

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

Konfigurace cesty pro vygenerované soubory

Abyste měli jistotu, že máte přístup k souborům, ujistěte se, že cílová cesta vygenerovaného souboru je v trvalém úložišti vázaném na vaši aplikaci. Například při vytváření trvalého úložiště v Azure Spring Apps můžete použít json podobný následujícímu příkladu.

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

Případně můžete k trvalému úložišti připojit následující příkaz.

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>

Další kroky