Utiliser les paramètres de diagnostic des options JVM pour le dépannage avancé dans Azure Spring Apps
Remarque
Les plans Essentiel, Standard et Entreprise seront déconseillés à compter de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.
Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.
Cet article s’applique à : ✔️ Java ❌ C#
Cet article s’applique à : ✔️ De base/Standard ✔️ Entreprise
Cet article explique comment utiliser les paramètres de diagnostic via les options JVM pour effectuer un dépannage avancé dans Azure Spring Apps.
Il existe plusieurs paramètres de démarrage pour une application basée sur JVM qui sont liés aux journaux de vidage de tas, Java Flight Recorder (JFR) et de nettoyage de la mémoire (GC). Dans Azure Spring Apps, nous prenons en charge la configuration de JVM à l’aide des options JVM.
Pour plus d’informations sur la configuration des paramètres de démarrage d’une application basée sur JVM, consultez az spring app deployment dans la documentation de référence d’Azure CLI. Les sections suivantes fournissent plusieurs exemples de valeurs utiles pour le paramètre --jvm-options
.
Prérequis
- Une instance de service Azure Spring Apps déployée. Pour bien démarrer, suivez notre guide de démarrage rapide sur le déploiement d’une application via Azure CLI.
- Au moins une application déjà créée dans votre instance de ce service.
- Votre propre stockage persistant comme décrit dans Guide pratique pour activer votre propre stockage persistant dans Azure Spring Apps. Ce stockage est utilisé pour enregistrer les fichiers de diagnostic générés. Les chemins d’accès que vous fournissez dans les valeurs de paramètres ci-dessous doivent se trouver sous le chemin de montage du stockage persistant lié à votre application. Si vous souhaitez utiliser un chemin d’accès sous le chemin de montage, veillez à créer le sous-tracé au préalable.
Générer un vidage du tas quand la mémoire est insuffisante
Utilisez le paramètre --jvm-options
suivant pour générer un vidage du tas lorsque vous rencontrez une erreur de mémoire insuffisante.
--jvm-options="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path-to-heap-dump-folder>"
Au lieu de spécifier le chemin d’accès au dossier de vidage du tas, vous pouvez fournir un nom de fichier spécifique. Toutefois, nous vous recommandons vivement de fournir un chemin d’accès à un dossier à la place. Si vous fournissez un nom de fichier, la commande génère un vidage du tas pour la première erreur de mémoire insuffisante uniquement en raison des limitations du format de fichier HPROF. Si vous fournissez un chemin d’accès à un dossier, vous obtiendrez un vidage du tas dans un fichier avec un nom généré automatiquement pour chaque erreur de mémoire insuffisante.
Générer des journaux GC
Utilisez le paramètre --jvm-options
suivant pour générer des journaux GC. Pour plus d’informations, consultez la documentation JVM officielle.
--jvm-options="-XX:+PrintGCDetails -Xloggc:<path-to-GC-log-file>"
Générer un fichier JFR à la sortie
Utilisez le paramètre --jvm-options
suivant pour générer un fichier JFR. Pour plus d’informations, consultez la documentation JVM officielle.
--jvm-options="-XX:StartFlightRecording=dumponexit=true,filename=<path-to-JFR-file>"
Configurer le chemin d’accès pour les fichiers générés
Pour vous assurer que vous pouvez accéder à vos fichiers, assurez-vous que le chemin d’accès cible de votre fichier généré se trouve dans le stockage persistant lié à votre application. Par exemple, vous pouvez utiliser un code JSON similaire à l’exemple suivant lorsque vous créez votre stockage persistant dans 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
}
}
]
}
Vous pouvez également utiliser la commande suivante pour l’ajouter au stockage persistant.
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>