티스토리 뷰
JVM hang 걸렸을 때 thread dump 남기는 법
행복한아빠 2009.11.26 21:50Java 애플리케이션이 상태가 안좋거나 멈추었을때 JVM에서 무슨일이 벌어지고 있는지 정확히 찾는 방법으로 thread dump를 수행하면 아주 유용합니다. 특히 어떤 코드가 무한 루프 돌던가 어떤 코드블럭을 나오지 못할 경우 거의 바로 찾을 수 있습니다.
Thread dump가 무한루프나 코드블럭을 빠져나오지 못하는 곳을 바로 표시하거나 하는건 아니고 thread dump 남길 당시의 각 쓰레드의 stack trace를 보여주어 그 당시 수행하고 있는 java 메소드를 볼 수 있습니다. 문제를 풀 수 있는 좋은 출발점이 될 수 있습니다.
한 시점의 JVM 쓰레드의 각 stack 상태를 보는 것이기 때문에 문제가 발생한 시점에 약간의 간격을 두어 몇 번 남기고 비교하는게 좋은 방법입니다.
Thread dump 를 남기자
■ Windows
Windows에서 thread dump를 남기려면 command console 에서 java 애플리케이션을 실행해야 합니다. 쓰레드 덤프를 남기려는 시점에 Ctrl-Break 를 console에서 입력합니다.
■ Unix/Linux
간단히 thread dump를 남기고 싶은 JVM process에 SIGQUIT 시그널을 보냅니다.
prompt> kill -SIGQUIT process_id또는prompt> kill -3 process_id
* java 프로세스 아이디를 찾으려면 ps axf | grep java 하면 되겠습니다.
Thread dump를 보자
Thread dump는 그냥 text 형태의 매우 긴 로그입니다. 따라서 여러개의 thread dump를 그냥 날로 보려면 좀 피곤합니다. thread dump를 쉽게 분석할 수 있는 몇 가지 도구가 있겠지만 그 중 Samurai 이용해 보면 좋습니다. (다른 건 써 본적이 없어서...)
다음 URL을 참조하세요.
'6. 리눅스' 카테고리의 다른 글
VirtualBox 리눅스 서버 SSH로 연결하기 (0) | 2020.08.02 |
---|---|
jstack 그리고 jconsole - JVM Stack Trace 얻기 (0) | 2019.01.04 |
Thread Dump, Heap Dump 생성 및 분석 방법 (0) | 2019.01.04 |
리눅스 서버 60초안에 상황파악하기 (0) | 2019.01.03 |
쓰레드 덤프 뜨기 (0) | 2019.01.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 커널
- 튜닝
- 쿠버네티스
- [오라클 튜닝] instance 튜닝2
- 오라클 홈디렉토리 copy 후 startup 에러
- [오라클 튜닝] sql 튜닝
- CVE 취약점 점검
- Oracle
- 앤시블
- (InstantClient) 설치하기(HP-UX)
- pod 상태
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- 우분투
- 5.4.0.1072
- startup 에러
- 스토리지 클레스
- ubuntu
- K8s
- 트리이스
- directory copy 후 startup 에러
- 키알리
- 여러서버 컨트롤
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- MSA
- 오라클
- 테라폼
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- 코로나19
- 버쳐박스
- 설치하기(HP-UX)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함