Använda diagnostikinställningarna för JVM-alternativ för avancerad felsökning i Azure Spring Apps
Kommentar
Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.
Den här artikeln gäller för: ✔️ Java ❌ C#
Den här artikeln gäller för: ✔️ Basic/Standard ✔️ Enterprise
Den här artikeln visar hur du använder diagnostikinställningar via JVM-alternativ för att utföra avancerad felsökning i Azure Spring Apps.
Det finns flera JVM-baserade programstartparametrar relaterade till heapdump, JFR (Java Flight Recorder) och GC-loggar (skräpinsamling). I Azure Spring Apps har vi stöd för JVM-konfiguration med JVM-alternativ.
Mer information om hur du konfigurerar JVM-baserade programstartsparametrar finns i az spring app deployment in the Azure CLI reference documentation (Az Spring app deployment in the Azure CLI reference documentation). Följande avsnitt innehåller flera exempel på användbara värden för parametern --jvm-options
.
Förutsättningar
- En distribuerad Azure Spring Apps-tjänstinstans. Följ vår snabbstart om hur du distribuerar en app via Azure CLI för att komma igång.
- Minst ett program har redan skapats i tjänstinstansen.
- Din egen beständiga lagring enligt beskrivningen i Så här aktiverar du din egen beständiga lagring i Azure Spring Apps. Den här lagringen används för att spara genererade diagnostikfiler. Sökvägarna som du anger i parametervärdena nedan bör vara under monteringssökvägen för den beständiga lagring som är bunden till din app. Om du vill använda en sökväg under monteringssökvägen måste du skapa undersökvägen i förväg.
Generera en heapdump när minnet är slut
Använd följande --jvm-options
parameter för att generera en heapdump när du stöter på ett out-of-memory-fel.
--jvm-options="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path-to-heap-dump-folder>"
Som alternativ till att ange sökvägen till mappen heap dump kan du ange ett specifikt filnamn. Vi rekommenderar dock starkt att du anger en mappsökväg i stället. Om du anger ett filnamn genererar kommandot en heapdump endast för det första felet med slut på minne på grund av begränsningarna i HPROF-filformatet. Om du anger en mappsökväg får du en heapdump i en fil med ett automatiskt genererat namn för varje out-of-memory-fel.
Generera GC-loggar
Använd följande --jvm-options
parameter för att generera GC-loggar. Mer information finns i den officiella JVM-dokumentationen.
--jvm-options="-XX:+PrintGCDetails -Xloggc:<path-to-GC-log-file>"
Generera en JFR-fil vid avslut
Använd följande --jvm-options
parameter för att generera en JFR-fil. Mer information finns i den officiella JVM-dokumentationen.
--jvm-options="-XX:StartFlightRecording=dumponexit=true,filename=<path-to-JFR-file>"
Konfigurera sökvägen för genererade filer
Se till att du kan komma åt dina filer genom att se till att målsökvägen för den genererade filen finns i den beständiga lagring som är bunden till din app. Du kan till exempel använda JSON som liknar följande exempel när du skapar din beständiga lagring i 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
}
}
]
}
Du kan också använda följande kommando för att lägga till i beständig lagring.
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>