기본적으로 자바는 Process와 Thread로 구성되어 있다.

이게 뭔지는 Java 성능을 결정짓는 코딩 습관과 튜닝 이야기라는 책에 잘 나와 있고...


여하튼.. 어떤 Thread가 뭔 짓을 하고 있는지를 보려면 Thread dump를 보면 된다.

자바는 기본적으로 Thread dump를 제공하기 위해서 jstack이라는 명령어(프로그램)을 제공하며 자세한 설명이 필요한 분은 아래의 설명을 보기 바란다.

http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstack.html

http://java.sun.com/javase/6/docs/technotes/tools/share/jstack.html

 

만약 JDK 버전이 5.0이면

Jstack pid

JDK 버전이 6.0 이면

jstack -l pid

명령을 수행하면 된다.


만약 솔라리스나 리눅스에서 이 명령으로 수행이 안되면

jstack -F pid

로 수행하면된다.


여기서 pid 는 프로세스의 id다.

만약 jstack이 수행하는데 너무 오래 걸리고, 서버에 부하가 된다면 kill -3으로 쓰레드 덤프를 뜨는 것도 도움이 된다.


분석하는 방법은 쉽지 않지만 다음과 같은 툴들이 있다.
TDA라는 툴
https://tda.dev.java.net/

IBM의 JCA라는 툴

http://www.alphaworks.ibm.com/tech/jca



Posted by tuning-java
http://www.j2eestudy.co.kr/lecture/lecture_read.jsp?table=j2ee&db=lecture0201_1&id=24

금일 세미나 수강생중 한분이 쓰레드 덤프를 어떻게 분석하는지에 대한 질문을 하셔서,

관련 자료를 찾다가 가장 적절한 내용이기에 링크를 정리해 둔다.

조대협님이 정리하신 내용인데,
정말 상세하고 잘 되어 있다.

근데...

개발자 분들은 직접 분석하려고 하는 것 보다는,
WAS 엔지니어나 서버 엔지니어 분들께 분석을 요청 드리는 것이
가장 빠르고, 현명하고, 간편하고, 머리 안아픈 방법이라는 것을 명심해 주기 바란다.
Posted by tuning-java