프로그래밍 언어/JAVA

[정보] Java Mission Control(JMC) 이해

투칼론 2023. 3. 23. 18:21
반응형

(원문) https://www.prosysopc.com/blog/using-java-mission-control-for-performance-monitoring/

 

개요

Oracle Java Mission Control은 Java 애플리케이션을 관리, 모니터링, 프로파일링 및 문제 해결하기 위한 도구 모음입니다. Oracle Java Mission Control은 버전 7u40부터 표준 Java SDK에 포함되었습니다. JMC는 JMX Console과 Java Flight Recorder로 구성됩니다. 더 많은 플러그인을 Mission Control 내에서 쉽게 설치할 수 있습니다. JMC는 Eclipse IDE에도 설치할 수 있습니다.

 

Java Mission Control은 JMX를 사용하여 원격 Java 프로세스와 통신합니다. JMX 콘솔은 실행 중인 JVM 인스턴스를 모니터링하고 관리하기 위한 도구입니다. 이 도구는 메모리 및 CPU 사용량, 가비지 수집, 스레드 활동 등에 대한 실시간 데이터를 제공합니다. 또한 JVM 및 Java 애플리케이션에서 MBean을 모니터링하고 관리하는 데 사용할 수 있는 모든 기능을 갖춘 JMX MBean 브라우저가 포함되어 있습니다.

 

Java 프로세스에서 원격 관리 에이전트를 활성화하기 위해 시작할 때 다음 매개변수를 추가합니다.

-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=3614 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false

로컬에서는 이러한 옵션이 필요하지 않지만 이 예에서는 원격 테스트 서버에서 SampleConsoleServer를 실행합니다. 또한 아래 스크린샷은 Eclipse의 "구성 실행 -> 인수" 탭을 보여줍니다.

이제 SampleConsoleServer가 시작되면 포트 3614에 대한 JMX 연결이 허용됩니다. 포트 번호는 현재 날짜를 기준으로 임의로 할당되었습니다.

JMC는 JDK와 함께 번들로 제공되며 Windows 시스템의 "C:\Program Files\Java\jdk1.x.x_xx\bin\jmc.exe"에서 찾을 수 있습니다.

"Create a new custom JVM connection" 선택.

호스트명/IP주소와 포트 정보를 넣은 후, Finish 버튼을 클릭.

'Overview' 탭을 클릭

탭 페이지는 시스템 속성, 메모리 관리, Java 스레드 등에 대한 런타임 정보를 제공합니다.

 

Java Flight Recorder

 

Java Flight Recorder는 Oracle JDK에 내장된 프로파일링 및 이벤트 수집 프레임워크입니다. Java Flight Recorder는 JMC를 사용하지 않고 녹음을 수집하는 데 사용할 수 있지만 이 예에서는 이러한 도구를 함께 사용합니다.

분석할 애플리케이션은 항상 옵션으로 시작해야 합니다.

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

JFR 관련한 아규먼트를 추가함

 

또한 UaClient를 연결하고 SampleConsoleServer에서 값을 읽고 UaClient를 연결 해제하여 흥미로운 데이터 세트를 생성하는 스크립트를 실행합니다.

Flight Recording 설정은 JMV 브라우저에서 "Flight Recorder" 아이콘을 두 번 클릭하여 열 수 있습니다.

Fixed recordings와 continuous recordings의 두 가지 대체 recording 유형이 있습니다. continuous 녹화에는 정의된 종료 시간이 없으며 명시적으로 덤프해야 합니다.

"Finish"을 클릭하면 화면 하단에 녹화 진행률이 표시됩니다. 이 예에서는 고정 시간 녹화를 사용하고 1분 동안 비행 녹화를 실행합니다. 녹음이 끝나면 결과를 JMC로 분석할 수 있습니다.

Flight recording의 "일반" 탭은 다음과 같습니다.

Java Flight Recorder는 운영 체제, JVM 및 JVM에서 실행되는 Java 애플리케이션에 대한 정보를 제공합니다.

 

Flight recording의 1분 동안 스크립트가 클라이언트 집합을 5번 연결하고 연결을 끊었다는 CPU 사용량 스파이크에서 명확하게 볼 수 있습니다. 또한 recording 초기에 이전 클라이언트의 마지막 배치가 서버에서 연결 해제되려고 했습니다.

다음으로 "Code" 탭으로 이동합니다.

이 탭은 다양한 패키지 및 클래스의 활동을 보여줍니다. 이 실행 중에 java.util.concurrent가 가장 많이 사용된 Package이고 org.opcfoundation.us.builtintype.NodeId가 가장 많이 사용된 Class임을 추론할 수 있습니다.

화면 하단의 "Hot Methods" 탭으로 이동해 보겠습니다.

이 뷰는 특정 메서드의 활동과 이러한 메서드가 호출된 출처를 보여줍니다. 실행 설정에서 "org.opcfoundation.ua.builtintypes.NodeId.compareTo(NodeId)"가 가장 많은 시간을 소비한 것을 볼 수 있습니다.

 

결론

 

이것은 Java Mission Control 및 Flight Recorder 사용에 대한 짧은 소개였습니다. 다음 게시물에서는 MBean 브라우저로 볼 수 있는 자체 MBean 및 MXBean을 선언하는 방법을 살펴볼 것입니다. 또한 주소 공간에 런타임 데이터를 게시하는 예제 OPC UA 서버를 만들 것입니다.