Java
Thread Dump Analyzer
스레드덤프 생성하기
OS에서 생성하기
OS에서 바로 생성하는경우 대부분 stdout 으로 출력되기 때문에 로그파일에 저장되거나 아니면 console 로 직접 출력이 된다. 따라서 콘솔출력을 redirection으로 로깅하고 있지 않은경우 저장이 불가능 할 수도 있다. 이점 참고하기 바란다.
- 리눅스 :
kill -3 [PID]
- 윈도우 :
Ctrl + Break
JVM에서 생성하기
jps -v
로 java 프로세스 확인jstack [PID]
(jstack으로 반응이 없는 경우 –F 옵션)jcmd [PID] Thread.print
(jdk7 이후 등장)jcmd [PID] help
로 명령어 확인 가능, 직관적임- 이때 시간이 있다면 텀을 두고 3~4장을 떠두는게 좋다.
ThreadLogic
https://github.com/sparameswaran/threadlogic
- 과거 오라클 사이트에 있었으나 개편되면서 사라지고, 아래 개발자가 github에 기존 코드를 이동
- 전체적인 UI나 기능이 깔끔하고 직관적임
- 쓰레드덤프 load 시간이 비교적 오래걸림
IBM TMDA (Thread and Monitor Dump Analyzer)
https://www.ibm.com/support/pages/ibm-thread-and-monitor-dump-analyzer-java-tmda
- IBM에서 만든 analyzer로 유명한 편임
- 전체적인 UI 깔끔하고 속도도 빠른편
- 개인적으로 UX 가 좀 복잡한거 같음
- 대략 어떤 원인인지는 확인이 되나 쓰레드 간의 lock, block, wait 상태를 직관적으로 보여주지 않아서 직접 찾아야함
jVisualVM (JDK)
- 쓰레드 덤프 제대로 못불러오는 이슈도 있고 전체적으로 느림
- heap dump analyze 할때는 (느리지만) 괜찮은듯함
irockel TDA
https://github.com/irockel/tda
- open source 라서 큰 기대를 안했는데 매우 추천
- UI는 투박하나 UX가 직관적임
- 특히 쓰레드간의 lock, block, waiting 상태를 직관적으로 보여줘서 직접 찾아다닐 필요가 없음
- 예를 들어, 특정 쓰레드가 어떤 monitor를 lock 하고 있고, 그 lock으로 인해 block, waiting 하는 쓰레드들을 모여서 보여줌
- 반대로, 어떤 쓰레드가 block, waiting 상태이면 어떤 lock과 monitor로 인해 해당 상태인지 연결해서 보여줌
WEB 으로 서비스되는 사이트
https://gceasy.io/
https://fastthread.io/
- UI가 기똥차고 analyze를 기똥차게 해줌
- 하지만, IBM TMDA 처럼 쓰레드 간의 연결고리를 찾는게 쉽지 않음
- 웹사이트에 파일을 upload 해야하기 때문에 찝찝함
Redis
로그인하면 댓글을 남길 수 있습니다.