Thread Dump
🧵 Thread Dump란?
정의
Thread Dump는 특정 시점의 JVM 스레드 상태를 스택 트레이스 형태로 기록한 스냅샷이다. 스레드가 무엇을 하고 있는지, 어디서 막혀 있는지 확인할 때 사용한다.
🧩 Thread Dump의 구성
- 각 스레드의 이름
- 스레드 상태
- 실행 중인 메서드
- 대기 중인 락 정보
- 스택 트레이스
🔍 Thread 상태 분석 포인트
RUNNABLE: 실행 중이거나 CPU를 사용 중일 수 있다.BLOCKED: 락을 기다리고 있을 수 있다.WAITING: 다른 스레드의 신호를 기다리고 있다.TIMED_WAITING: 일정 시간 동안 대기 중이다.
포인트
Thread Dump는 스레드가 왜 멈췄는지를 추적하는 데 매우 유용하다.
🎯 활용 시점
- 서버가 멈춘 것처럼 보일 때
- CPU 사용률이 높을 때
- 교착 상태를 의심할 때
- 응답 지연 원인을 찾을 때
🛠️ 생성 방법
jstack사용kill -3사용- IDE 또는 모니터링 도구 사용
예시
jstack <pid> > thread-dump.txt
🧭 Thread Dump를 볼 때 주의할 점
- 한 번의 덤프만 보지 말고 여러 시점의 덤프를 비교한다.
- 스레드 상태만 보지 말고 락과 호출 흐름도 함께 본다.
- CPU 문제인지, 대기 문제인지 구분해야 한다.
[!important] 정리 Thread Dump는 JVM 내부 스레드 문제를 분석하는 기본 도구다. 서버 지연, 멈춤, 교착 상태를 찾을 때 필수적으로 확인한다.
댓글남기기