Condividi tramite


Usare le impostazioni di diagnostica delle opzioni JVM per la risoluzione dei problemi avanzata in Azure Spring Apps

Nota

I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.

Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.

Questo articolo si applica a:✅ Java ❎ C#

Questo articolo si applica a:✅ Basic/Standard ✅ Enterprise

Questo articolo illustra come usare le impostazioni di diagnostica tramite le opzioni JVM per eseguire la risoluzione dei problemi avanzata in Azure Spring Apps.

Esistono diversi parametri di avvio dell'applicazione basati su JVM correlati ai log di dump dell'heap, Java Flight Recorder (JFR) e Garbage Collection (GC). In Azure Spring Apps è supportata la configurazione JVM usando le opzioni JVM.

Per altre informazioni sulla configurazione dei parametri di avvio dell'applicazione basati su JVM, vedere az spring app deployment nella documentazione di riferimento dell'interfaccia della riga di comando di Azure. Le sezioni seguenti forniscono diversi esempi di valori utili per il --jvm-options parametro .

Prerequisiti

Generare un dump dell'heap quando si esaurisce la memoria

Usare il parametro seguente --jvm-options per generare un dump dell'heap quando si verifica un errore di memoria insufficiente.

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

In alternativa a specificare il percorso della cartella di dump dell'heap, è possibile specificare un nome di file specifico. Tuttavia, è consigliabile specificare invece un percorso di cartella. Se si specifica un nome di file, il comando genererà un dump dell'heap solo per il primo errore di memoria insufficiente, a causa delle limitazioni del formato di file HPROF. Se si specifica un percorso di cartella, si otterrà un dump dell'heap in un file con un nome generato automaticamente per ogni errore di memoria insufficiente.

Generare log GC

Usare il parametro seguente --jvm-options per generare i log GC. Per altre informazioni, vedere la documentazione ufficiale di JVM.

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

Generare un file JFR all'uscita

Usare il parametro seguente --jvm-options per generare un file JFR. Per altre informazioni, vedere la documentazione ufficiale di JVM.

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

Configurare il percorso per i file generati

Per assicurarsi di poter accedere ai file, assicurarsi che il percorso di destinazione del file generato si trovi nell'archivio permanente associato all'app. Ad esempio, è possibile usare JSON simile all'esempio seguente quando si crea l'archiviazione permanente 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
              }
          }
       ]
    }

In alternativa, è possibile usare il comando seguente per aggiungere all'archiviazione permanente.

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>

Passaggi successivi