Java Flight Recorder (JFR) 사용 방법

Marvin Kim (Hong-IL)
4 min readJul 12, 2023

--

이전 포스트에서 Java Advanced 제품에 대해 간단히 소개를 드렸고, 그 제품에 포함된 Java Mission Control 이라는 기능에 대해 설명하였다.

이번에는 Java Advanced의 다른 기능인 Java Flight Recorder (JFR) 에 대해서 소개해 드립니다.

Java Mission Control은 앞 서 소개한 대로, Java Application에 대한 실시간 상태 정보를 확인할 수 있는 툴로서, Application의 상태 변화 및 문제 분석에 필요한 정보를 쉽게 확인할 수 있습니다.

Java Flight Recorder의 경우, 이렇게 실시간으로 수집된 정보를 지속적으로 수집, 저장하여, 문제가 발생시 원인 분석 및 문제가 발생한 시기의 상태를 분석하는데 필요한 정보를 제공하는 툴입니다.

이름처럼 항공기의 블랙박스와 같이 상태 정보를 저장하였다가, 저장된 정보를 사고 이후 원인 분석에 사용하기 위해서 사용됩니다.

Java Flight Recorder 실행에 앞 서, 연결하고자 하는 Java Application의 java command에 아래와 같이 option을 추가해 줍니다.

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr MyApp

Java Flight Recorder의 경우, 라이선스를 필요로 하는 기능이기 때문에, UnlockCommercialFeatures 옵션을 FlightRecorder 옵션과 함께넣어 주어야 합니다.

위 명령의 경우, 60초 동안, myrecording.jfr의 파일에 MyApp의 상태 정보를 저장하도록 설정이 되어 있습니다.

만일 프로그램이 이미 실행 중이라면, 아래와 같이 jcmd를 이용해서 JFR(Java Flight Recorder) 기능을 시작할 수도 있습니다.

그러나, jcmd의 경우에도, 앞서 설명드린 -XX:+UnlockCommercialFeatures -XX:+FlightRecorder 옵션이 Java Application 시작 시 반드시 포함되어야 합니다.

jcmd 5368 JFR.start duration=60s filename=myrecording.jfr

duration 과 filename 이외에, 저장된 파일의 최대 사이즈를 지정하거나, 압축 옵션을 이용하여 저장되는 파일의 크기를 줄일 수 있는 옵션들이 있습니다.

자세한 내용은 아래 링크의 Java Flight Recorder Runtime Guide를 참고하시기 바랍니다.

http://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/index.html

위 명령어로 저장된 파일은 Java Mission Control 프로그램을 이용하여 내용을 확인할 수 있습니다.

다음은 Java Mission Control 소개 시, 예로 보여드렸던 02_JFR_HotMethods 프로젝트에 저장된 hotmethods.jfr 파일을 Java Mission Control 상에서 연 화면입니다.

해당 파일은 jmc_tutorial.zip 안의 02_JFR_HotMethods 폴더에 있습니다.

1분동안 저장된 내용이고, 맨 위의 Events 항목을 보시면 LinkedList에서 blocking이 되어 있어서, 많은 이벤트들이 전달되지 않고 있는 모습입니다.

이에 비해, hotmethods_fixed.jfr 을 열게 되면 아래와 같은 화면을 보실 수 있습니다.

LinkedList를 HashSet으로 변경한 후, 상태를 저장한 내용이고 마찬가지로 1분 동안 데이터를 저장하였습니다.

CPU 사용량도 줄고, 특히 Events들이 많이 전달되는 것을 보실 수 있습니다.

이와 같이, Java Flight Recorder를 이용하여, 실시간으로 전송되는 Java Application 의 상태 정보를 저장할 수 있고, 향후 문제점 분석이나 해결에 필요한 정보들을 쉽게 얻을 수 있습니다.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Marvin Kim (Hong-IL)
Marvin Kim (Hong-IL)

No responses yet

Write a response