Thread Dump 생성 방법

  • Unix : kill -3 [PID]

  • window : Ctrl + Break

  • 공통 :  jstack [PID]

  • 반드시 생성시 3~5회 연속으로 생성하여 문제 상황에 대한 변화 과정을 확인


Thread Dump 정보

    • tid (Java-Level Thread ID )를 이용하여 정보 얻기

      • ThreadMXBean을 이용하여 ThreadInfo 정보 획득 가능
      • JMX 또는 REST API 등록으로 정보 획득을 가능하게 할 경우 문제 분석 용이
      • tid와 threadId가 다른 경우도 존재하기 때문에 name으로 찾는 것이 좋음
  •  - nid (Native Thread ID)를 이용하여 정보 얻기

      • Linux  : ps -mo , ps - Elf 이용

Thread 상태

 Thread Dump - BLOCKED State ( synchronized )



Thread Dump - BLOCKED State - DEADLOCK



Thread Dump - WAIT State

wait 메소드 실행 시 가지고 있던 모니터를 다 반환, wait하는 객체를 notify를 하는 코드를 찾아야 함



Thread Dump - RUNNABLE State



트러블 슈팅

1. CPU 사용 및 Load가 점차적으로 증가

1. 재시작후 Thread  dump를 주기적으로 생성

2. 장애 원인 확인





2. 요청이 증가하는 경우 장애가 발생하지는 않지만 응답시간이 느려지는 현상

1. Thread Dump  생성후 TDA로 분석



2. Stack Trace 확인

3. log4j 설정 확인

4. log4j 문서 확인

3. 요청이 증가한 매우 간헐적으로 CPU가 100%로 폭증 이후 요청량이 줄어들어도 CPU 사용량은 줄어들지 않고 재시작후 정상으로 돌아오는 현상

1. CPU를 많이 사용하는 Thread 확인 - ps -mo 명령어를 통하여 CPU를 사용하는 lwp ( Light Weight Process) 확인



2. 16진수로 변경된 Thread Id를 이용하여 Thread Dump 검색


4. 장애 원인 확인





  


참조

https://d2.naver.com/helloworld/1286587








'IT > ETC' 카테고리의 다른 글

트러블 슈팅  (0) 2018.11.09
4 steps to troubleshooting  (0) 2018.10.29

+ Recent posts