자바 프로세스 스레드 덤프 생성 방법 (jstack)

자바 스레드 덤프

자바 스레드 덤프(Thread Dump)란 JVM에서 활성화된 모든 스레드의 목록을 말합니다. 스레드란 프로세스 내에서 작업을 수행하는 주체입니다. 하나의 프로세스에 여러 개의 스레드가 사용되면 멀티 스레드 프로세스라고 부릅니다.

스레드 덤프 분석하는 이유

스레드가 많이 사용되면 CPU 및 메모리 사용량을 증가시킵니다. 스레드 덤프를 확인하면 구체적으로 어떤 모듈이 CPU를 많이 사용하는지 확인할 수 있습니다. 애플리케이션의 CPU 사용량이 급증하거나 OutOfMemoryError 등이 발생할 때 스레드 덤프를 분석하는 방법으로 원인을 찾을 수 있습니다.

스레드 덤프 수집 방법

자바 스레드 덤프를 수집하는 방법은 여러 가지입니다. 이 글에서는 jstack.exe를 이용한 간단한 방법을 소개해드리겠습니다.

 

1. 스레드 덤프를 생성할 자바 프로세스의 PID를 확인합니다. 윈도우에서는 작업 관리자를 확인하고, 리눅스라면 ps -f 등의 명령어로 확인이 가능합니다.

 

2. jstack.exe은 JVM을 설치하면 bin 폴더에 기본적으로 함께 설치되기 때문에 바로 사용이 가능합니다. 아래의 구문과 예시를 기준으로 명령줄 인터페이스로 사용하시면 됩니다.

 

[구문]

jstack [-l] <pid> > 다운로드 경로/파일명.txt

-l 옵션을 사용하면 일부 추가 정보를 같이 출력합니다. 

 

[예시]

jstack -l 17264 > /tmp/thread_dump.txt

3. 스레드 덤프가 txt 파일로 저장됩니다.

스레드 덤프 보기 쉽게 분석하기 - fastThread

스레드 덤프를 통계 UI를 포함한 보고서 형태로 분석해주는 웹사이트가 있습니다. fastThread입니다. 이 사이트를 이용하면 별도의 툴 없이도 보고서 형태로 스레드 덤프를 분석한 결과를 확인할 수 있습니다.

 

1. 브라우저에서 fastthread.io로 접속합니다. 아래 링크로 들어가셔도 됩니다.

2. 화면에 바로 보이는 Java Thread Dump Analyzer에 수집한 스레드 덤프 파일을 업로드하고 Analyze를 클릭합니다.

반응형

댓글

Designed by JB FACTORY