De diagnostische instellingen van JVM-opties gebruiken voor geavanceerde probleemoplossing in Azure Spring Apps
Notitie
De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.
Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.
Dit artikel is van toepassing op:✅ Java ❎ C#
Dit artikel is van toepassing op:✅ Basic/Standard ✅ Enterprise
In dit artikel leest u hoe u diagnostische instellingen gebruikt via JVM-opties voor geavanceerde probleemoplossing in Azure Spring Apps.
Er zijn verschillende op JVM gebaseerde opstartparameters voor toepassingen die betrekking hebben op heapdumps, JFR-logboeken (Java Flight Recorder) en garbagecollection (GC). In Azure Spring Apps ondersteunen we JVM-configuratie met behulp van JVM-opties.
Zie az spring app deployment in the Azure CLI reference documentation (Referentiedocumentatie voor Azure CLI) voor meer informatie over het configureren van op JVM gebaseerde opstartparameters voor toepassingen. De volgende secties bevatten verschillende voorbeelden van nuttige waarden voor de --jvm-options
parameter.
Vereisten
- Een geïmplementeerd azure Spring Apps-service-exemplaar. Volg onze quickstart voor het implementeren van een app via Azure CLI om aan de slag te gaan.
- Er is al minstens één toepassing gemaakt in uw service-exemplaar.
- Uw eigen permanente opslag, zoals beschreven in Hoe u uw eigen permanente opslag inschakelt in Azure Spring Apps. Deze opslag wordt gebruikt om gegenereerde diagnostische bestanden op te slaan. De paden die u in de onderstaande parameterwaarden opgeeft, moeten zich onder het koppelingspad bevinden van de permanente opslag die is gebonden aan uw app. Als u een pad onder het koppelpad wilt gebruiken, moet u het subpad vooraf maken.
Een heapdump genereren wanneer er onvoldoende geheugen beschikbaar is
Gebruik de volgende --jvm-options
parameter om een heapdump te genereren wanneer er een fout met onvoldoende geheugen optreedt.
--jvm-options="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path-to-heap-dump-folder>"
Als alternatief voor het opgeven van het pad naar de heap-dumpmap, kunt u een specifieke bestandsnaam opgeven. We raden u echter ten zeerste aan een mappad op te geven. Als u een bestandsnaam opgeeft, genereert de opdracht alleen een heapdump voor de eerste fout met onvoldoende geheugen, vanwege de beperkingen van de HPROF-bestandsindeling. Als u een mappad opgeeft, krijgt u een heapdump in een bestand met een automatisch gegenereerde naam voor elke fout in het geheugen.
GC-logboeken genereren
Gebruik de volgende --jvm-options
parameter om GC-logboeken te genereren. Zie de officiële JVM-documentatie voor meer informatie.
--jvm-options="-XX:+PrintGCDetails -Xloggc:<path-to-GC-log-file>"
Een JFR-bestand genereren bij afsluiten
Gebruik de volgende --jvm-options
parameter om een JFR-bestand te genereren. Zie de officiële JVM-documentatie voor meer informatie.
--jvm-options="-XX:StartFlightRecording=dumponexit=true,filename=<path-to-JFR-file>"
Het pad voor gegenereerde bestanden configureren
Om ervoor te zorgen dat u toegang hebt tot uw bestanden, moet u ervoor zorgen dat het doelpad van het gegenereerde bestand zich in de permanente opslag bevindt die is gebonden aan uw app. U kunt bijvoorbeeld JSON gebruiken die vergelijkbaar is met het volgende voorbeeld wanneer u uw permanente opslag maakt in 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
}
}
]
}
U kunt ook de volgende opdracht gebruiken om toe te voegen aan permanente opslag.
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>