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 |