Capturer le vidage de tas et le vidage de thread manuellement et utiliser Java Flight Recorder 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 générer manuellement un vidage de tas ou un vidage de thread et comment démarrer Java Flight Recorder (JFR).

Un dépannage efficace est essentiel pour vous permettre de résoudre les problèmes dans les environnements de production et de garder votre entreprise en ligne. Azure Spring Apps fournit des fonctionnalités de streaming et de requête dans les journaux des applications, des métriques riches, des alertes, le suivi distribué, etc. Toutefois, lorsque vous recevez des alertes concernant des requêtes avec une latence élevée, une fuite du tas JVM ou une utilisation élevée de l’UC, il n’existe aucune solution de dernier kilomètre. C’est pourquoi nous vous permettons de générer manuellement un vidage de tas ou un vidage de thread et de lancer JFR.

Prérequis

Générer un head dump

Utilisez la commande suivante pour générer un vidage du tas de votre application dans Azure Spring Apps.

az spring app deployment generate-heap-dump \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path>

Générer un thread dump

Utilisez la commande suivante pour générer un vidage du thread de votre application dans Azure Spring Apps.

az spring app deployment generate-thread-dump \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path>

Démarrer JFR

Utilisez la commande suivante pour démarrer JFR pour votre application dans Azure Spring Apps.

az spring app deployment start-jfr \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path> \
    --duration <duration-of-JFR>

La valeur par défaut de duration est de 60 secondes.

Générer un fichier de sauvegarde à l’aide du Portail Azure

Pour générer un vidage du segment de mémoire ou du thread de votre application dans Azure Spring Apps, procédez comme suit.

  1. Dans le Portail Azure, accédez à votre application cible, puis sélectionnez Résolution des problèmes.

    Screenshot of the Azure portal showing the app Overview page with the Troubleshooting button highlighted.

  2. Dans le volet Résolution des problèmes, sélectionnez l’instance de l’application et le type de vidage que vous souhaitez collecter.

    Screenshot of the Azure portal Troubleshooting pane.

  3. Dans le champ Chemin d’accès du fichier, spécifiez le chemin de montage de votre stockage persistant.

  4. Sélectionnez Collecter.

Récupérer vos fichiers de diagnostic

Accédez au chemin d’accès du fichier cible dans votre stockage persistant et recherchez votre vidage/JFR. À partir de là, vous pouvez les télécharger sur votre ordinateur local. Le nom du fichier généré est semblable à <app-instance>_heapdump_<time-stamp>.hprof pour le vidage de tas, à <app-instance>_threaddump_<time-stamp>.txt pour le vidage de thread et à <app-instance>_JFR_<time-stamp>.jfr pour le fichier JFR.

Étapes suivantes