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
- Istanza del servizio Azure Spring Apps distribuita. Per iniziare, seguire la guida di avvio rapido sulla distribuzione di un'app tramite l'interfaccia della riga di comando di Azure.
- Almeno un'applicazione già creata nell'istanza del servizio.
- Archiviazione permanente personalizzata, come descritto in Come abilitare l'archiviazione permanente in Azure Spring Apps. Questa risorsa di archiviazione viene usata per salvare i file di diagnostica generati. I percorsi specificati nei valori dei parametri seguenti devono trovarsi nel percorso di montaggio dell'archiviazione permanente associata all'app. Se si vuole usare un percorso nel percorso di montaggio, assicurarsi di creare in anticipo il sottopercorso.
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>