PHpullh

JAVA · 성능/JVM

JFR과 JMC

Java Flight Recorder로 운영 환경의 성능 데이터를 수집하고 분석합니다.

성능/JVM고급JFRJMCFlightRecorder프로파일링

핵심 설명

Java Flight Recorder로 운영 환경의 성능 데이터를 수집하고 분석합니다.

Java code

// JFR — Java Flight Recorder (JDK 11+ 무료)

// 1. 명령줄로 JFR 시작
// java -XX:StartFlightRecording=duration=60s,filename=app.jfr MyApp

// 2. 실행 중 JFR 제어
// jcmd <pid> JFR.start name=profile duration=30s
// jcmd <pid> JFR.dump name=profile filename=dump.jfr
// jcmd <pid> JFR.stop name=profile

// 3. 프로그래밍 방식
import jdk.jfr.*;

@Label("사용자 요청")
@Category({"Application", "Request"})
@StackTrace(false)
class RequestEvent extends Event {
    @Label("경로") String path;
    @Label("응답시간(ms)") long responseTime;
    @Label("상태코드") int statusCode;
}

public class JFRDemo {
    static void handleRequest(String path) {
        RequestEvent event = new RequestEvent();
        event.begin();

        // 요청 처리 시뮬레이션
        long start = System.currentTimeMillis();
        try { Thread.sleep((long)(Math.random() * 100)); }
        catch (InterruptedException e) {}

        event.path = path;
        event.responseTime = System.currentTimeMillis() - start;
        event.statusCode = 200;
        event.commit(); // JFR에 기록
    }

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            handleRequest("/api/users/" + i);
        }
        System.out.println("JFR 이벤트 기록 완료");
        System.out.println("JMC(JDK Mission Control)로 .jfr 파일 분석");
    }
}

학습 팁

JFR은 오버헤드가 1% 미만이라 운영 환경에서도 안전하게 사용할 수 있습니다. 성능 문제 진단의 첫 번째 도구입니다.

주의할 점

JFR 파일이 커지면 분석이 어렵습니다. duration이나 maxsize를 적절히 설정하세요.

자주 묻는 질문

JFR과 JMC란 무엇인가요?

Java Flight Recorder로 운영 환경의 성능 데이터를 수집하고 분석합니다.

JFR과 JMC 학습 시 주의할 점은 무엇인가요?

JFR 파일이 커지면 분석이 어렵습니다. duration 이나 maxsize 를 적절히 설정하세요.