글 검색

공개된 글의 제목과 본문을 검색합니다.

    닫기 Esc

    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_features
    JFR 사용을 위한 사전 설정
    bash
    jcmd process_id JFR.start duration=60s filename=mayrecording.jfr
    JFR 실행
    bash
    jcmd process_id JFR.check
    JFR 실행 상태 체크

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

    전체 글 둘러보기