Notes de version de Sun Identity Manager 8.1

Didacticiel : dépannage des problèmes de performance

Identity Manager fournit un didacticiel (profiler-tutorial.zip) pour vous aider à utiliser le profileur pour dépanner les formulaires, les règles Java, les flux de travaux et XPRESS.

Suivez les étapes ci-après pour compléter le didacticiel.

ProcedureÉtape 1: Création d'un projet Identity Manager

  1. Sélectionnez Fichier -> New Project (Nouveau projet).

  2. Lorsque l'assistant New Project (Nouveau projet) s'affiche, spécifiez ce qui suit puis cliquez sur Next (Suivant) :

    1. Dans la liste Categories (Catégories), sélectionnez Web pour indiquer le type de projet que vous créez.

    2. Dans la liste Projects (Projets), sélectionnez Identity Manager Project (Projet Identity Manager).


      Remarque –

      Vous devez créer un projet Identity Manager normal pour un environnement de déploiement doté de toutes les fonctionnalités. Ne sélectionnez pas l'option Identity Manager Project (Remote) (Projet Identity Manager (Distant)).


  3. Remplissez les champs suivants sur le panneau Name and Location (Nom et emplacement) puis cliquez sur Next (Suivant) :

    • Project Name (Nom du projet) : entrez Idm80 en tant que nom du projet.

    • Project Location (Emplacement du projet) : utilisez l'emplacement par défaut ou spécifiez-en un autre.

    • Dossier du projet : utilisez le dossier par défaut ou spécifiez-en un autre.

  4. Lorsque le panneau Identity Manager WAR File Location (Emplacement du fichier WAR d'Identity Manager s'affiche, entrez l'emplacement du fichier war d'Identity Manager 8.1. Normalement, la décompression de ce fichier crée un fichier idm.war dans le même répertoire.

  5. Cliquez sur Next (Suivant) pour passer au panneau Repository Setup (Configuration du référentiel).

    Vous ne devriez pas avoir à modifier les paramètres par défaut de ce panneau, cliquez simplement sur Terminer. Lorsque vous voyez le message BUILD SUCCESSFUL (COMPILATION RÉUSSIE) dans la fenêtre Identity Manager IDE Output (Sortie d'Identity Manager IDE), vous pouvez extraire les fichiers du didacticiel du profileur. Pour les instructions, reportez-vous à l'Décompression du didacticiel du profileur.

ProcedureDécompression du didacticiel du profileur

  1. Décompressez profiler-tutorial.zip dans la racine du projet. Les fichiers extraits sont les suivants :

    <project root>/custom/WEB-INF/config/ProfilerTutorial1.xml
    <project root>/custom/WEB-INF/config/ProfilerTutorial2.xml
    <project root>/src/org/example/ProfilerTutorialExample.java
    <project root>/PROFILER_TUTORIAL_README.txt
  2. Démarrez le profileur. Continuez par l'Étape 3 : Démarrage du profileur..

ProcedureÉtape 3 : Démarrage du profileur.

  1. Utilisez les instructions figurant dans Avant de commencer pour augmenter la mémoire pour votre serveur et la JVM Netbeans.

  2. Utilisez l'une des méthodes décrites dans Présentation pour démarrer le profileur.

  3. Vous pouvez spécifier les options de profilage lorsque la boîte de dialogue Profiler Options (Options du profileur) s'affiche.

  4. Continuez par l' Étape 4 : Définition des options du profileur


    Remarque –

    Pour des informations détaillées sur l'ensemble des différentes options du profileur, reportez-vous à Spécification des options du profileur.


Procedure Étape 4 : Définition des options du profileur

Dans le cadre de ce didacticiel, spécifiez les options suivantes pour le profileur :

  1. Sur l'onglet Mode (Mode), sélectionnez Java and IDM Objects (Objets Java et IDM) pour profiler des objets formulaire, Java, règle, flux de travaux et XPRESS.

  2. Sélectionnez l'onglet Java Filters (Filtres Java).

    Suivez les étapes ci-après pour désactiver l'ensemble de vos classes Java Identity Manager à l'exception de vos classes Java personnalisées (dans ce cas, org.example.ProfilerTutorialExample) :

    1. Cliquez sur New (Nouveau) : un nouveau champ vierge s'affiche dans le bas de la colonne Filter (Filtre).

    2. Saisissez com.waveset.* dans ce nouveau champ puis sélectionnez la case Exclude (Exclure).

    3. Cliquez de nouveau sur New (Nouveau).

    4. Saisissez com.sun.idm.* dans ce nouveau champ puis sélectionnez la case Exclude (Exclure).

  3. Cliquez sur OK pour exécuter le profileur.


    Remarque –

    La première exécution du profileur sur un projet ou peu après une action Clean Project (Nettoyer le projet) prend quelques minutes.


    Lorsque le profileur termine le traitement, vous êtes invité à vous connecter.

  4. Saisissez le mot de passe configurator, sélectionnez la case à cocher (Se rappeler le mot de passe) puis cliquez sur OK pour continuer.

  5. Connectez-vous lorsque la fenêtre Identity Manager s'affiche.


    Remarque –

    En général, vous devriez vous connecter à Identity Manager sous un autre nom d'utilisateur et non pas de nouveau en tant que configurator. Vous êtes déjà connecté au profileur en tant que configurateur et le pool de session d'Identity Manager n'autorise qu'une entrée par utilisateur. L'utilisation de plusieurs entrées peut entraîner l'apparition d'un pool de session interrompu et biaiser les résultats du profilage pour les problèmes de performances plus minutieux.

    Cependant, dans le cadre de ce simple exemple, le pool de session n'a pas de conséquences et vous pouvez vous connecter en tant que configurator/configurator.


  6. Dans Identity Manager, sélectionnez Tâches du serveur <:> Exécuter des tâches puis cliquez sur ProfilerTutorialWorkflow1.

    Le didacticiel peut prendre un certain temps pour répondre.

  7. Bien que vous puissiez prendre un instantané maintenant, vous allez à la place réinitialiser vos résultats, exécuter le profileur, l'exécuter de nouveau puis prendre un instantané.


    Remarque –

    Ceci est la pratique recommandée pour exécuter le profileur avant de prendre un instantané pour être sûr que tous les caches sont amorcés, que tous les JSP sont compilés, et ainsi de suite.

    Exécuter plusieurs fois le profileur vous permet de vous concentrer sur les problèmes de performance réels. La seule exception à cette pratique est constituée par le cas où vous auriez du mal à remplir les caches eux-mêmes.


    1. Revenez à l'affichage IDM Profiler (Profileur d'IDM) dans l'Identity Manager IDE. Cliquez sur l'icône Reset Collected Results (Réinitialiser les résultats recueillis) dans la section Profiling Results (Résultats du profilage) (ou dans la section Contrôles) pour réinitialiser tous les résultats recueillis à ce stade.

    2. Dans Identity Manager, sélectionnez de nouveau Tâches du serveur -> Exécuter des tâches puis cliquez sur ProfilerTutorialWorkflow1.

    3. Lorsque Schéma des processus s'affiche, revenez à Identity Manager IDE puis cliquez sur Take Snapshot (Prendre l'instantané) dans la section Profiling Results (Résultats du profilage).

  8. L'Identity Manager IDE télécharge votre instantané et affiche les résultats sur la droite de la fenêtre.

    Cette zone est l'affichage Call Tree (Arborescence d'appels). Vous devriez voir dans le haut de l'arborescence d'appels un /idm/task/taskLaunch.jsp avec un temps indiqué dans la colonne Time (Temps). Le temps devrait indiquer que l'ensemble de la requête a pris six+ secondes.

  9. Développez le nœud /idm/task/taskLaunch.jsp, vous pourrez voir que ProfilerTutorialWorkflow1 a pris six secondes.

  10. Développez le nœud ProfilerTutorialWorkflow1. Vous remarquerez que activity2 a pris quatre secondes et activity1 deux.

  11. Développez activity2.

    Vous remarquerez que action1 a pris deux secondes et action2 deux.

  12. Développez action1, vous verrez que invoke> a aussi pris deux secondes.

  13. Double-cliquez sur invoke> pour ouvrir ProfilerTutorialWorkflow1.xml et mettez en surbrillance la ligne suivante :


    <invoke name='example' class='org.example.ProfilerTutorialExample'/>

    Vous devriez voir qu'un appel vers la méthode ProfilerTutorialExample a pris deux secondes.


    Remarque –

    Vous explorez actuellement une source XML qui a été capturée dans l'instantané et non pas une source du projet. Les instantanés sont entièrement autonomes (pour des informations détaillées, reportez-vous àMode de localisation et de gestion de la source par le profileur).


  14. Sélectionnez l'onglet CPU: <date><temps pour revenir à votre instantané.

  15. Développez le nœud invoke>. Vous remarquerez que le profileur a passé deux secondes dans la méthode Java ProfilerTutorialExample.example().

  16. Double-cliquez sur le nom de la méthode pour ouvrir la source ProfilerTutorialExample.java et mettez en surbrillance la ligne suivante :


    Thread.sleep(2000);

    Vous tenez le problème ! Cette méthode contient un sommeil de thread de deux secondes.

  17. Si vous revenez à l'arborescence d'appels, vous pouvez voir que tous les chemins de deux secondes mènent à cette méthode (vous devriez voir trois chemins ; pour un total de six secondes).

  18. Sélectionnez l'onglet Hotspots (Points actifs, dans le bas de la zone de l'arborescence d'appels) pour ouvrir l'affichage Points actifs. Vous remarquerez que ProfilerTutorialExample.example() a un self time total de six secondes

    (pour plus d'informations sur les points actifs, reportez-vous à Travailler avec l'affichage des instantanés.)

  19. Cliquez avec le bouton droit sur ProfilerTutorialExample.example() et sélectionnez Show Back Traces (Afficher les traces inverses) dans le menu contextuel.

    Un nouvel onglet Back Traces (Traces inverses) s'affiche dans le bas de la zone.

  20. Développez le nœud ProfilerTutorialExample.example() sur l'onglet Traces inverses pour voir que cette méthode a été appelée depuis trois emplacements et qu'elle a pris deux secondes lorsqu'elle a été appelée depuis chaque emplacement

    (pour plus d'informations sur les traces inverses, reportez-vous à Travailler avec l'affichage des instantanés.)

  21. Cliquez sur Save the snapshot (Enregistrer l'instantané) dans l'icône du projet pour enregistrer votre instantané puis fermez.

    Si vous contrôlez la section Saved Snapshots (Instantanés enregistrés) de l'onglet IDM Profiler (Profileur IDM), vous devriez voir votre instantané (il se peut que vous deviez faire défiler la section vers le bas).

  22. Sélectionnez l'instantané enregistré puis cliquez sur Open (Ouvrir) pour l'ouvrir de nouveau.


    Remarque –

    Vous pouvez utiliser le bouton Enregistrer sous pour enregistrer vos instantanés à l'extérieur et le bouton Charger pour charger un instantané depuis l'extérieur de votre projet.


  23. Fermez de nouveau l'instantané.

ProcedureÉtape 5 : Profilage d'un flux de travaux ManualAction

La prochaine partie de ce didacticiel explique comment profiler une ManualAction de flux de travaux.

  1. Dans Identity Manager, sélectionnez Tâches du serveur -> Exécuter des tâches puis cliquez sur ProfilerTutorialWorkflow2.

    Un formulaire vide s'affiche au bout de quelques instants.

  2. Cliquez sur Save (Enregistrer) pour afficher le schéma du processus.

  3. Sélectionnez de nouveau Tâches du serveur -> Exécuter des tâches.

  4. Revenez à l'affichage Identity Manager IDE IDM Profiler et cliquez sur Reset Collected Results (Réinitialiser les résultats recueillis) dans la section Profiling Results (Résultats du profilage).

  5. Cliquez maintenant sur ProfilerTutorialWorkflow2 dans Identity Manager.

  6. Lorsque le formulaire vierge s'affiche de nouveau, cliquez sur Enregistrer.

  7. Dans l'affichage IDM Profiler (Profileur IDM), cliquez sur Take Snapshot (Prendre l'instantané).

    Un instantané devrait s'afficher au bout de quelques secondes dans la zone Call Tree (Arborescence des appels). Vous devriez voir que /idm/task/workItemEdit.jsp a pris six+ secondes (ce résultat correspond à l'action manuelle dans le flux de travaux).

  8. Développez le nœud /idm/task/workItemEdit.jsp, vous pourrez voir qu'exécuter toutes les dérivations dans le formulaire ManualAction a pris au total six secondes.

  9. Développez les nœuds Derivation, displayNameForm, variables.dummy et <block>.

    Vous devriez voir que block> a pris six secondes et que, de ce temps, le profileur a passé deux secondes dans chacun des trois appels à la méthode ProfilerTutorialExample.example().

  10. Vous pouvez double-cliquer sur <block> pour afficher la source.