Lorsque l'application Java est suspendue, que vous ne connaissez même pas le cas d'utilisation qui conduit à ce problème et que vous voulez enquêter, je comprends que les vidages de threads peuvent être utiles.
Mais comment pouvons-nous facilement dériver des données utiles à partir des vidages de threads pour trouver où se situe le problème ? L'application serveur sur laquelle je travaille produit des vidages de threads très longs, car il s'agit d'une architecture EJB et les vidages de threads contiennent de nombreux threads de conteneurs que je ne suis pas sûr de devoir examiner (c'est-à-dire des threads qui n'exécutent pas le code de mon application, mais celui de JBoss).
Hier, j'ai essayé le Analyseur de vidage de fil outil. L'outil est définitivement meilleur que de regarder les vidages de fils bruts dans un éditeur de texte, parce que vous pouvez filtrer les fils qui ne vous intéressent pas, voir la liste des fils, cliquer sur un fil pour voir ses détails, comparer les vidages de fils pour trouver les longs fils, etc.
Mais il y a encore trop de données à analyser - près de 300 fils. Je ne connais pas de critères que je pourrais utiliser pour filtrer tous les fils de discussion JBoss, qui ne m'intéressent pas. Je ne sais pas si je dois regarder uniquement les threads qui sont actuellement dans l'état "runnable" ou si "waiting on condition" et "in Object.wait" sont également importants.
Quelle est l'approche que vous suivriez normalement et les outils que vous utiliseriez en général ?
0 votes
Voir aussi ibm.com/developerworks/community/groups/service/html/
4 votes
J'ai écrit ceci, il analyse les thread dumps, aucune installation nécessaire : spotify.github.io/threaddump-analyzer
0 votes
@JohanWalles bel outil !