본문으로 건너뛰기

WAS 인스턴스별 스레드 덤프 분석

스레드 덤프 분석

WAS 인스턴스의 현재 실행중인 내용을 확인하려면 스레드 덤프를 이용하여 분석한다.

자세한 스레드 덤프의 분석 방법에 대해서는, 서버가 느려질 때 분석 방법을 참고하라.

액티브 스레드 컨트롤

액티브 스레드 컨트롤러(Active Thread Controller)은 스레드 덤프와 달리 현재 실행 중인 스레드를 실시간(5초, 10초 간격)으로 확인하는 기능이다.

이 기능을 통해 현재 액티브한 스레드 목록을 확인 할 수 있고, 특정 스레드를 선택 하면 실행중인 스레드의 스텍 트레이스(Stack Trace), 트랜잭션 트레이스(Transaction Trace), 트랜잭션 정보(Transaction Info)를 확인 할 수 있다.

“중지”와 “Interrupt” 버튼은 이용하면 특정 조건에 만족할때 실행중인 스레드를 종료할 수 있다.

① Thread Stop, Interrupt
② 조회 옵션

  • 10s, 5s : 초에 한번씩 조회
  • Disable : 조회 중지

마지막으로 유휴 스레드(기본값은 약 200개 내외)가 충분히 여유가 있는 상황이라면 임의로 종료하지 않기를 권장한다.

Thread Interrupt란?

스레드의 실행을 중단시키고, 중단 상태를 확인하며, 중단 처리 로직을 구현하는 데 활용됩니다. 이를 통해 스레드의 실행을 제어하고, 효과적으로 병행 처리를 할 수 있다.

Interrupt를 통해 스레드가 중단 상태로 설정되면 sleep(), wait(), join() 등의 블로킹 메서드를 호출하고 있을 때 예외가 발생하고 해당 예외를 적절하게 처리하면 종료된다. 따라서 sleep(), wait(), join() 등의 블로킹 상태가 아닌 경우 종료되지 않는다.

또한 스레드가 네트워크 I/O나 파일 I/O와 같은 블로킹 호출에 있을 경우, 인터럽트는 효과가 없다.

Thread Stop란?

스레드 중지는 Java 1.1 이후 Deprecated 되었다. 이유는 스레드 중지는 안전하지 않으며, 강제 종료된 스레드가 사용하는 자원이 해제되지 않을 수 있기때문이다. 따라서 사용에 권장하지 않는다.