Gdy zawiesza się aplikacja Java, nie znasz nawet przypadku użycia, który prowadzi do tego i chcesz zbadać sprawę. Rozumiem, że zrzuty wątków mogą być przydatne.Narzędzie analizy zrzutu wątków/metoda
Ale jak możemy łatwo wyprowadzić użyteczne dane ze zrzutu wątku, aby znaleźć miejsce, w którym występuje problem? Aplikacja serwera, z którą pracowałem, tworzy bardzo długie zrzuty wątków, ponieważ jest to architektura EJB, a zrzuty wątków zawierają wiele wątków kontenerowych, na których nie powinienem polegać (tj. Wątków, które nie obsługują mojego kodu aplikacji). , ale kod JBossa).
Wczoraj wypróbowałem narzędzie Thread Dump Analyzer. Narzędzie jest zdecydowanie lepsze niż spojrzenie na nieprzetworzone zrzuty nici w edytorze tekstu, ponieważ możesz odfiltrować wątki, które Cię nie interesują, zobacz listę wątków, kliknij wątek, aby zobaczyć jego szczegóły, porównaj zrzuty wątków, aby znaleźć długo działa wątki itd patrz obrazek poniżej:
ale jest jeszcze zbyt wiele danych do analizy - prawie 300 wątków. Nie znam żadnych kryteriów, za pomocą których mógłbym odfiltrować wszystkie wątki JBoss, w których nie jestem zainteresowany. Nie jestem pewien, czy powinienem przyglądać się wątkom, które są obecnie w stanie "uruchomionym", czy też "oczekujące warunku" i "w Object.wait" są również ważne.
Jakie podejście zazwyczaj stosujesz i jakich narzędzi używasz?
Zobacz także https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=2245aa39-fa5c-4475-b891-14c205f7333c – oluies
Napisałem to, analizuje zrzuty wątków, bez instalacji konieczne: http://spotify.github.io/threaddump-analyzer/ –
@JohanWalles ładne narzędzie! – ycomp