De diagnostische instellingen van JVM-opties gebruiken voor geavanceerde probleemoplossing in Azure Spring Apps

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

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>

Volgende stappen