본문 바로가기
Middleware(WAS)/Java

Thread 및 Thread Dump

by 노쿄 2023. 8. 29.
Thread Dump 정보

 


Thread State Transition

 

상태 열거 상수 설명
쓰레드 객체 생성 NEW 쓰레드가 아직 시작되지 않은 상태
실행 대기 RUNNABLE 쓰레드가 실행 가능한 상태
일시 정지 BLOCKED Monitor Lock을 기다리는 동안 차단된 상태
WAITING 다른 쓰레드가 특정 작업을 수행하기를 기다리는 상태
TIMED_WAITING 지정된 대기 시간 동안 대기하는 상태
- Thread.sleep, Object.wait with timeout, Thread.join with timeout, LockSupport.parkNanos, LockSupport partUntil
종료 TERMINATED 쓰레드가 실행이 완료되어 종료한 상태

Thread Dump 유형별 패턴 #1 - RUNNABLE
원격 서버로부터 메시지 수신을 받기 위해 계속 대기하는 경우

쓰레드 상태는 RUNNABLE이지만 원격 서버에 소켓 통신 시 응답 지연으로 Worker Thread가 부족해지는 경우

대부분 Top Stack이 "at java.net.SocketInputStream.socketRead0(Native Method)" 프레임이다.


Thread Dump 유형별 패턴 #2 - BLOCKED & TIMED_WAITING
락을 획득하지 못하는 경우

한 스레드가 락을 소유하고 있어 다른 스레드가 락을 획득하지 못해 애플리케이션의 전체적인 성능이 느려지는 경우


Thread Dump 유형별 패턴 #3 - WAITING
공유 리소스를 Pool로 관리할 때, Pool 안의 객체가 부족할 때 대기하는 경우

DBCP(DataBase Connection Pool) 사용 중 여유 DB Connection이 부족하면 Connection을 얻기 위해 대기하게 됨

대부분 Top Stack이 "at java.lang.Object.wait(Native Method)" 프레임이다.

'Middleware(WAS) > Java' 카테고리의 다른 글

JSP Cache  (0) 2026.04.16
Server Performance Stats  (0) 2026.02.23
WAR vs JAR  (0) 2026.02.20
[Database] Connection Pool, DataSource  (0) 2023.10.24