🧵 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 내부 스레드 문제를 분석하는 기본 도구다. 서버 지연, 멈춤, 교착 상태를 찾을 때 필수적으로 확인한다.


연결문서

댓글남기기