스레드덤프 분석 어떻게 하면 될까요?
안녕하세요 오픈마루 클라우드 서비스 팀 이정섭입니다.
이번 포스팅 주제는 스레드 덤프 사용 방법 및 원인 분석 하기 입니다.
스레드덤프 가 왜 필요한가요 ?
- 장애가 발생 했을 때
- 애플리케이션이 느리게 동작할 때
- Was log 만으로 분석이 어려울 때
이 글에서는 스레드 덤프를 생성하는 방법 부터 어떻게 스레드 덤프를 활용하여 원인을 찾아 분석을 하고 장애 상황 사례를 통해 어떤 부분을 보고 파악 해야하는지 설명하겠습니다.
스레드 덤프 란 ?
- JVM 내부에서 현재 수행 중인 스레드의 SnapShot을 텍스트로 출력
- 서버 Hang, 서버 Slowdown 등 서버에서 발생하는 문제를 해결하는 가장 유용한 도구
- WAS Trouble Shooting에 필요한 다양한 데이터를 제공 합니다.
Thread 상태
java.lang.Thread.State
- NEW : 생성 되어있지만 실행 되지 않은 상태
- RUNNING : 작업 수행 중
- BLOCKED : 다른 스레드의 Lock 해제를 기다리는 중
- WAITING – wait(), join(),park() 메소드로 대기중
- TIMED_WAITING : WAITING과 같지만, 정해진 시간만 대리
- TERMINATED : 종료됨
스레드덤프 받는 방법은?
- Microsoft Windows 에서 스레드덤프 받는 방법
- Linux 에서 스레드덤프 받는 방법
- WAS 에서 스레드덤프 받는 방법
- APM 에서 스레드덤프 받는 방법
Windows 에서 스레드덤프 받기
-
Window 에서 스레드덤프 받는 방법은 java 를 실행 한 커맨드 창에서 “Control + Break” 입니다.
Linux 에서 스레드덤프 받기
- Linux 에서 스레드덤프 받는 방법은 “Kill -3 Process_ID”
컨테이너 에서 스레드덤프 받기
도커 컨테이너에서 스레드덤프 받는 방법은 컨테이너에 로그인 한후 jstack 으로 받을 수 있습니다.
APM 에서 스레드 덤프 받기
-
APM 에서 스레드덤프 받는 방법과 분석 방법은 APM 화면에서 스레드 덤프 요청 메뉴 선택 후 분석도구를 이용하여 분석합니다.
OPENMARU APM 에서 스레드 덤프 받는 방법은?
-
WAS → Instance → (호스트명) → (인스턴스 이름) → 스레드 덤프 분석 → ‘요청’ 버튼 클릭’
2. 자동생성 조건> 이벤트 → 경고 정책 → Pending Transaction 이 Critical 조건이 되면 자동 생성
3. <자동생성 조건> 이벤트 → 경고 정책 → Pending Transaction 이 Critical 조건이 되면 자동 생성
스레드 덤프의 정보 구성
-
스레드덤프의 각 스레드의 정보 구성
시스템 장애 발생 시 전문가를 통한 온라인 분석 서비스 – QUICK SERVICE
QUICK SERVICE 란 ?
시스템 장애나 성능 문제에 자유로운 IT 운영자는 없습니다. Quick Service는 시스템 장애가 발생하였을때 OPENMARU APM에서 버튼을 클릭하면
해당 화면과 시스템 정보를 오픈나루의 전문가에게 자동으로 전달하여 원인이 무엇인지 분석해 주는 실시간 온라인 서비스 입니다.
고객께서 Quick Service 을 통해 전달해 주신 화면과 Thread Dump 및 메타 정보를 접수 합니다.(자동으로 케이스를 생성합니다.)
장애의 원인을 분석하기 위해 로그 수집이나 엔지니어 방문 요청이 필요 없습니다.
OPENMARU APM 화면에서 원클릭으로 Quick Service를 요청하시면 장애원인을 분석하여 결과 보고서를 드립니다. (APM Screenshot / Thread Dump / Meta Info)
스레드 덤프 마무리
이번 포스팅을 통해 스레드 덤프에 대해 알아보았는데요.
미들웨어을 운영하면서 피할 수 없는 장애들에 대한 해결 실마리로서 스레드 덤프는 운영자에게는 기본적인 스킬이라고 할 수 있습니다.
다음에는 스레드 덤프 기본 지식들을 가지고 어떻게 문제 진단하고 원인을 파악하는지 에 대한 사례별로 살펴보겠습니다.
- DB 쿼리가 느릴 때
- HTTP 호출이 느릴 때
- Logging 처리가 느릴 때
- 파일 I/O가 느릴 때
- Lock이 걸릴 때
운영자 분들이 예기치 못한 장애를 접하며 많은 고생을 하는데요.
스레드덤프를 통해 문제를 해결하는데 도움이 되었으면 좋겠습니다.
이 글은 오픈마루 클라우드 서비스팀 이정섭 님이 작성해 주셨습니다.
Written by Jungsub Lee ( subaaa@opennaru.com )
ChatGPT 장애로 본 쿠버네티스 모니터링의 필요성
/in APM, Kubernetes/by 오픈마루 마케팅1오픈마루, 일본에서 “MSA 호출 관계 추적” 관련 특허 등록
/in APM, OPENMARU/by 오픈마루 마케팅1브로드컴 VM웨어 인수에 따른 고객의 우려
/in APM, OPENMARU/by 오픈마루 마케팅2