6. jcmd
- Tags
- JVM
- Created
- 2022년 9월 23일 PM 2:15
1. jcmd를 이용해 Java 프로세스 정보 확인하기#
- jcmd는 JDK 7이상에 포함되어 있는 JVM 분석도구로 $Java_HOME/bin 디렉토리에 존재
- Java 프로세스에 대한 기본적인 클래스 정보, 스레드 정보, VM 정보 등을 제공
- 스크립트 방식으로 사용한다.
bash
./jcmd- 매개변수 없이 사용시 Java 프로세스의 PID와 어떤 클래스가 실행되고 있는지 표시된다.
bash
jcmd process_id help- 특정 프로세스에 대해 수행 가능한 명령어를 볼 수 있다.
- 4가지 명령옵션 카테고리로 나뉜다.
- JFR
- Java Flight Recorder 기능(JVM 상태를 녹화하는 기능)을 사용
- VM
- JVM instance에 대한 기본 정보
- GC
- GC에 대한 기본 정보 및 GC명령
- Others
- help기능, Java management agent 제어 기능, 스레드 덤프 기능 등
bash
jcmd process_id VM.uptime- JVM의 가동시간 정보를 알 수 있다.
bash
jcmd process_id VM.command_line- 프로세스 실행 시 사용된 옵션정보 확인
bash
jcmd process_id VM.flags -all- JVM에 적용된 옵션정보
-all을 붙이면 기본 옵션 정보도 포함된다.
bash
jcmd process_id VM.system_properties- 시스템 설정에 대한 정보를 확인 할 수 있다.
bash
jcmd process_id VM.version- 프로세스의 JDK 버전에 대해서 알아볼 수 있다.
bash
jcmd process_id Thread.print- 수행되고 있는 스레드 정보를 표시할 수 있다.
- 스레드 덤프와 유사항 내용이 출력되고, 현재 수행중인 스레드를 즉시 알아보는데 유용
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)
- 일정한 시간 간격으로 시스템 활동 정보를 수집하기 위해 로깅됨.
- 로깅 시간 간격은 설정 가능.
bash
jcmd process_id VM.unlock_comercial_featuresbash
jcmd process_id JFR.start duration=60s filename=mayrecording.jfrbash
jcmd process_id JFR.check