티스토리 뷰

그러면 thread-stop을 어떻게 할까?

하시기 전에 운영 WAS가 JEUS면 웹콘솔에서 interrupt를 먼저 하시길 추천드린다.

작동방법은 간단하다.  jps를 이용해서 오래 걸리는 JAVA Thread를 확인한 후 jkillthread.jar를 이용하여 thread-stop을 실행하여 제거한다. (jkillthread.jar는 GitHub - jglick/jkillthread: Simple tool to attach to a Java VM and kill an individual thread.)

 

jglick/jkillthread

Simple tool to attach to a Java VM and kill an individual thread. - jglick/jkillthread

github.com

1. Jps –lm 명령을 통해 ID 확인: 여기서는 536이 thread 

2. jstack "ID"로 thread명 확인: 여기서는 webtob-hth0-2[MS1-60]

3. 링크에서 받은 jkillthread-1.0.jar를 WAS서버에 저장하고 java 명령을 통해 thread 중지!!(다시 한번 말씀드려요. 중지하시기 전에 다시 한번 영향도를 판단하고 피치 못한 경우에만 하시길.)

4. 웹어드민이나 APM에서 thread 상태 확인

이렇게 정리가 된다........하지만

1. 조용히 죽을 수 있다.(BEST!!)

2. 죽을 수도 있지만 자동으로 다시 시작될 수 있다.

3. thread는 죽었지만 DB에서 트랜잭션의 롤백될까???(중요 작업은 하지 마시길 권고)

jkillthread를 만든 개발자도 이렇게 경고하고 있으니 정말 WAS가 죽을 심각한 상황이 아니면 비추천. 질문이나 해보신 분은 덧글 부탁드림..

728x90
반응형
댓글