Utiliser les paramètres de diagnostic des options JVM pour le dépannage avancé dans Azure Spring Apps

Remarque

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

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

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 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>

Étapes suivantes