Le vidage des threads est essentiel pour le dépannage des applications Java. Si vous travaillez sur les performances, les fuites de mémoire, le débogage, etc., vous serez souvent invité à effectuer un vidage de thread et de tas.
Il est prendre la décharge manuellement mais si vous souhaitez le faire automatiquement, voici comment vous pouvez le faire.La démonstration suivante est basée sur
La démonstration suivante est basée sur WebSphere 9, mais la procédure serait similaire à celle des autres versions de WAS.
Taking Thread Dump When JVM Stop
Il pourrait y avoir un scénario où vous voudriez prendre le décharge de fil chaque fois que la JVM s'arrête. Cela sera utile lorsque vous ne savez pas qui ou comment la JVM est arrêtée.
Pour configurer ceci;
- Connectez-vous à la console d'administration WebSphere
- Accédez à Serveurs >> Types de serveurs >> Serveurs d'applications WebSphere
- Accédez à la JVM et développez «Java and Process Management» sous Server Infrastructure
- Cliquez sur Définition du processus
- Cliquez sur «Machine virtuelle Java» sous Propriétés supplémentaires >> Propriétés personnalisées
- Cliquez sur Nouveau et entrez le nom comme
com.ibm.ws.runtime.dumpArrêt
- Valeur comme véritable
- cliquez sur OK
- Examiner et enregistrer la configuration
Désormais, le vidage du tas sera généré à chaque arrêt de la JVM.
J'ai arrêté la machine virtuelle Java et j'ai pu voir le fichier javacore suivant sur le serveur WAS sous le chemin du profil.
-rw-r - r--. 1 racine racine 3179348 28 novembre 22:49 javacore.20161128.224916.4926.0001.txt -rw-r - r--. 1 racine racine 3124208 28 novembre 22:49 javacore.20161128.224924.4926.0002.txt
Taking Thread Dump When Hung
Si vous rencontrez un problème de thread suspendu et que vous effectuez actuellement le vidage manuellement, vous pouvez automatiser cela.
En effectuant la configuration de base, WebSphere génère le vidage chaque fois qu'un thread est suspendu pendant une durée configurée.
- Connectez-vous à la console WAS et accédez à la JVM respective
- Développez «Administration» sous Infrastructure de serveur et cliquez sur Propriétés personnalisées
- Ajoutez les trois propriétés suivantes
com.ibm.websphere.threadmonitor.threshold - Générer un vidage lorsqu'un thread est suspendu pendant une durée configurée. La valeur est en secondes.
com.ibm.websphere.threadmonitor.interval - À quelle fréquence le moniteur de thread doit vérifier les threads bloqués. La valeur en secondes.
com.ibm.websphere.threadmonitor.dump.java - Générer un vidage lorsqu'il est détecté. La valeur est vraie.
La configuration ci-dessus générera un vidage chaque fois qu'un thread est suspendu en 600 secondeset WebSphere surveillera le thread chaque en 300 secondes.
Une fois que vous avez la décharge, vous pouvez analyser et résoudre le problème de l'application. J'espère que cela aide.