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 실행 상태 체크