Použití nastavení diagnostiky možností prostředí JVM pro pokročilé řešení potíží v Azure Spring Apps
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container 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.
K dispozici je několik spouštěcích parametrů aplikace založených na JVM, které se týkají výpisu haldy, Java Flight Recorder (JFR) a protokolů uvolňování paměti (GC). V Azure Spring Apps podporujeme konfiguraci JVM pomocí možností JVM.
Další informace o konfiguraci parametrů spuštění aplikace založené na prostředí JVM najdete v referenční dokumentaci k Azure CLI v az spring app deployment . Následující části obsahují několik příkladů užitečných hodnot parametru --jvm-options
.
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 cestou připojení, nezapomeňte dílčí cestu vytvořit předem.
Generování výpisu paměti haldy při nedostatku 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 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>