Partager via


Capturer le vidage de tas et le vidage de thread manuellement et utiliser Java Flight Recorder 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 à :✅ Essentiel/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.

    Capture d’écran du Portail Azure montrant la page Vue d’ensemble de l’application, avec le bouton Résolution des problèmes mis en évidence.

  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.

    Capture d’écran du volet Résolution des problèmes du Portail Azure.

  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