Duplicata possible:
Puis-je forcer la génération d'un fichier journal de plantage JVM?
Comment puis-je forcer ou générer un vidage de mémoire JVM sur un serveur d'applications Java ou en général?
Problème (Résumé): Pour diagnostiquer les problèmes liés au blocage ou aux performances médiocres des applications client s'exécutant sur WebSphere Application Server Community Edition, les utilisateurs devraient générer les divers vidages et les envoyer au support IBM pour diagnostic .
Cette note technique explique comment générer les vidages requis lorsque WebSphere Application Server Community Edition s'exécute en tant que service de système d'exploitation. Cette note technique s'applique à IBM Java SDK 1.5.0 et IBM Java SDK 1.6.0
Cause: lorsque les applications clientes rencontrent des blocages ou de mauvaises performances avec WebSphere Application Server Community Edition sur IBM Java SDK 1.5.0 ou IBM Java SDK 1.6.0, et le serveur s'exécute en tant que service du système d'exploitation, la fenêtre de commande/shell correspondante du processus serveur n'est pas disponible pour les utilisateurs. Par conséquent, les signaux utilisateur ne peuvent pas être envoyés depuis le clavier pour déclencher des vidages.
Résolution du problème: Lorsque la fenêtre de commande du processus JVM est disponible, la génération de vidages est simple comme suit:
Windows: Si le paramètre JVM est configuré pour déclencher les vidages au signal utilisateur, appuyez sur CRTL+Break
Dans la fenêtre de commande pour générer les vidages.
Linux: Si le paramètre JVM est configuré pour générer les vidages au signal utilisateur, appuyez sur CTRL+\
Dans la fenêtre Shell.
AIX: Si le paramètre JVM est configuré pour générer les vidages au signal utilisateur, appuyez sur CTRL+\
Dans la fenêtre Shell.
Remarque: Afin de générer Java vidage de mémoire, vidage de mémoire système, vidage de segment de mémoire et vidage instantané au signal de l'utilisateur, les agents de vidage doivent être configurés via les options JVM comme suit:
-Xdump:Java+heap+system+snap:events=user
Pour plus d'informations sur la configuration des agents de vidage, visitez la page utilisant -Xdump
.
Toutefois, si WebSphere Application Server Community Edition s'exécute en tant que service de système d'exploitation, la fenêtre de commande peut ne pas être disponible. Ce cas se produit également lorsque le processus JVM est démarré avec javaw.exe sur Windows.
Dans les circonstances précédentes, l'utilisateur doit trouver l'ID de processus correspondant du processus JVM et utiliser les outils fournis par le fournisseur du système d'exploitation ou fournis par IBM pour générer les vidages en suivant les étapes ci-dessous.
Windows: WinDbg peut être téléchargé à partir du site des outils de développement Microsoft pour générer des vidages de mémoire système. Utilisez la commande suivante sur la console WinDbg pour générer le vidage de mémoire système:
dump /f <dumpfile>
Où dumpfile inclut le chemin du répertoire et le nom du fichier de vidage du noyau du système. Assurez-vous que l'option /f
Est utilisée à la place de /ma
. Le /f
Génère un vidage complet alors que /ma
Génère un mini vidage. Seuls les vidages complets sont pris en charge avec l'outil jextract fourni avec IBM Java SDK 1.5.0/1.6.0.
Utilitaire SendSignal pour Windows. Pour cela, la JVM doit être configurée pour générer les vidages sur les signaux utilisateur. Pour générer le Java core dump, heap dump, system core dump et un snap dump au signal utilisateur, l'option suivante doit être fournie à la JVM au démarrage:
-Xdump:Java+heap+system+snap:events=user
Remarque: L'utilitaire SendSignal peut être utilisé pour générer tous les types de vidages alors que WinDbg génère uniquement des vidages de mémoire système.
Linux and AIX
: Le signal pour Linux et AIX est SIGQUIT
. Utilisez la commande pour envoyer le signal utilisateur pour déclencher les différents vidages:
kill -3 <PID>
Pour cela, la JVM doit être configurée pour générer les vidages sur le signal utilisateur. Pour générer le vidage de noyau Java, le vidage de segment de mémoire, le vidage de mémoire système et un vidage instantané au signal utilisateur, l'option suivante doit être fournie à JVM au démarrage.
-Xdump:Java+heap+system+snap:events=user
Remarque: Les fichiers de vidage de mémoire système doivent être traités à l'aide de l'outil jextract et la sortie doit être envoyée au support IBM. Le jextract de la même machine virtuelle Java qui a rencontré le problème doit être utilisé pour traiter le vidage de mémoire du système:
<Java_HOME>/jre/bin/jextract <dumpfile>
Où dumpfile est le nom de fichier du vidage de mémoire système.
Cela produira un fichier Zip .Zip. Le fichier Zip doit être envoyé au support IBM.