////
Search

6. jcmd

Created
2022/09/23 05:15
Tags
JVM

1. jcmd를 이용해 Java 프로세스 정보 확인하기

jcmd는 JDK 7이상에 포함되어 있는 JVM 분석도구로 $Java_HOME/bin 디렉토리에 존재
Java 프로세스에 대한 기본적인 클래스 정보, 스레드 정보, VM 정보 등을 제공
스크립트 방식으로 사용한다.
./jcmd
Bash
복사
매개변수 없이 사용시 Java 프로세스의 PID와 어떤 클래스가 실행되고 있는지 표시된다.
jcmd process_id help
Bash
복사
특정 프로세스에 대해 수행 가능한 명령어를 볼 수 있다.
4가지 명령옵션 카테고리로 나뉜다.
JFR
Java Flight Recorder 기능(JVM 상태를 녹화하는 기능)을 사용
VM
JVM instance에 대한 기본 정보
GC
GC에 대한 기본 정보 및 GC명령
Others
help기능, Java management agent 제어 기능, 스레드 덤프 기능 등
jcmd process_id VM.uptime
Bash
복사
JVM의 가동시간 정보를 알 수 있다.
jcmd process_id VM.command_line
Bash
복사
프로세스 실행 시 사용된 옵션정보 확인
jcmd process_id VM.flags -all
Bash
복사
JVM에 적용된 옵션정보
-all을 붙이면 기본 옵션 정보도 포함된다.
jcmd process_id VM.system_properties
Bash
복사
시스템 설정에 대한 정보를 확인 할 수 있다.
jcmd process_id VM.version
Bash
복사
프로세스의 JDK 버전에 대해서 알아볼 수 있다.
jcmd process_id Thread.print
Bash
복사
수행되고 있는 스레드 정보를 표시할 수 있다.
스레드 덤프와 유사항 내용이 출력되고, 현재 수행중인 스레드를 즉시 알아보는데 유용

2. Java Flight Recording 기능 사용하기

Java Flight Recorder는 실행중인 자바 애플리케이션의 진단 및 프로파일링 도구이다.
JFR은 자바 애플리케이션 수행 중에 애플리케이션이나 JVM에서 발생하는 이벤트 데이터를 수집하여 분석 정보로 활용한다.
JFR의 프로파일링 방식은 운영 중인 시스템에 부하를 거의 주지 않기 때문에 중요한 운영 중인 시스템에 프로파일링을 수행할 때 효과적으로 사용 가능하다.

2.1 JFR의 4가지 이벤트 종류

instant event
즉시 발생하고, 발생 즉시 로깅됨.
duration event
시작시간과 종료시간이 있고, 이벤트가 끝난 시점에 로깅됨.
timed event
duraiton event에 부가적으로 사용자가 정의한 threshold(임계값)이 있어 특정 시간 이상 지속된 이벤트만 기록됨.
sample event(requestable event)
일정한 시간 간격으로 시스템 활동 정보를 수집하기 위해 로깅됨.
로깅 시간 간격은 설정 가능.
jcmd process_id VM.unlock_comercial_features
Bash
복사
JFR 사용을 위한 사전 설정
jcmd process_id JFR.start duration=60s filename=mayrecording.jfr
Bash
복사
JFR 실행
jcmd process_id JFR.check
Bash
복사
JFR 실행 상태 체크

3. GC 메모리 분석 기능 사용하기