JConsole 사용
JConsole (Java™ Monitoring and Management Console) 은 사용자가 Java 어플리케이션의 작동을 모니터하고 관리할 수 있도록 하는 그래픽 도구입니다.
JConsole 도구는 java.lang.management API를 기반으로 빌드되었습니다. JConsole은 동일한 워크스테이션 또는 원격 워크스테이션에서 실행되는 애플리케이션에 연결됩니다. 애플리케이션이 액세스를 허용하도록 구성되어야 합니다.
JConsole은 Java 애플리케이션에 연결할 때 애플리케이션에 대한 정보를 보고합니다. 세부사항에는 메모리 사용, 실행 중인 스레드 및 로드된 클래스가 포함됩니다. 이 데이터는 애플리케이션 및 JVM의 동작을 모니터하는 데 도움이 됩니다. 이 정보는 성능 문제점, 메모리 사용 문제, 정지 또는 교착 상태를 이해하는 데 유용합니다.
Java 애플리케이션을 모니터하도록 JConsole 설정
- 모니터할 Java 애플리케이션은 다른 시스템 또는 다른 사용자가 JConsole에 액세스할 수 있도록 하는 명령행 옵션을 사용하여 시작해야 합니다. 이러한 옵션이 없으면 JConsole이 동일한 시스템에서 동일한 사용자가 소유한 프로세스에 연결할 수 있습니다. 모니터링을 위한 가장 간단한 옵션 세트가 다음 예에 표시되어 있습니다.
<port number>의 값은 시스템의 사용 가능한 포트여야 합니다. 이 예에서 authenticate 및 ssl 옵션은 비밀번호 인증 및 SSL(Secure Sockets Layer)을 사용한 암호화를 방지합니다. 이러한 옵션을 사용하면 JConsole 또는 다른 JMX 에이전트가 지정된 포트에 액세스할 수 있는 경우 Java 애플리케이션에 연결할 수 있습니다. 이러한 비보안 옵션은 개발 또는 테스트 환경에서만 사용하십시오. 보안 옵션 구성에 대한 자세한 정보는 https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/connectors.html의 내용을 참조하십시오.-Dcom.sun.management.jmxremote.port=<port number> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false - 명령행에 jconsole을 입력하여 JConsole을 시작하십시오. 경로에는 Java 설치의 bin 디렉토리가 포함되어야 합니다.
- JConsole 새 연결 대화 상자가 열립니다. 1단계에서 지정한 호스트 이름 및 포트 번호를 입력하십시오. Java 애플리케이션과 동일한 워크스테이션에서 JConsole을 실행 중인 경우 호스트 이름 값을 localhost로 두십시오. 원격 시스템의 경우 호스트 필드 값을 워크스테이션의 호스트 이름 또는 IP 주소로 설정하십시오. 1단계에서 지정한 옵션을 사용한 경우 사용자 이름 및 비밀번호 필드를 공백으로 두십시오.
- 연결을 클릭하십시오. JConsole이 시작되고 요약 탭을 표시합니다.
JConsole에서 자체적으로 모니터하도록 설정
- 명령행에 jconsole을 입력하여 JConsole을 시작하십시오. 경로에는 SDK의 bin 디렉토리가 있어야 합니다.
- JConsole 새 연결 대화 상자가 열립니다. 원격 프로세스 필드에 localhost:0 를 입력하십시오.
- 연결을 클릭하십시오. JConsole이 시작되고 요약 탭을 표시합니다.
JConsole을 사용하여 Java 애플리케이션 모니터
JConsole 요약 탭에는 연결된 JVM에 대한 주요 세부사항이 표시됩니다. 여기에서 다른 탭을 선택하여 특정 측면에 대한 추가 세부사항을 볼 수 있습니다. 메모리 탭에는 JVM에 있는 각 메모리 풀의 사용 히스토리가 표시되며 가장 유용한 항목은 힙 메모리 사용입니다.
GC 수행 단추를 클릭하여 가비지 콜렉션이 수행되도록 요청할 수도 있습니다. 이전에 설명된 대로 보안 옵션이 사용 안함으로 설정된 상태로 연결되거나 제어 사용자로 인증되어 있어야 합니다.
스레드 탭에는 현재 실행 중인 스레드 수와 해당 ID의 목록이 표시됩니다.
스레드 ID를 클릭하면 스레드 상태 및 현재 스택 추적이 표시됩니다.
클래스 탭에는 현재 로드된 클래스의 수 및 애플리케이션이
시작된 후 로드되고 로드 해제된 클래스의 수가 표시됩니다. 상세 출력 선택란을 선택하면
설정 및 설정 해제될 상세 클래스 로딩 출력에서 클라이언트 JVM에 로드된 클래스의 목록을 확인할 수 있습니다. 출력은 클라이언트 JVM의 stderr 출력에 표시됩니다.
MBeans 탭에서는 JVM에 대한 세부사항을 제공하는 플랫폼 MBean의 상태를 검사할 수 있습니다. MBeans 및 J9 MXBean 확장에 대한 자세한 정보는 Eclipse OpenJ9 문서의 언어 관리 인터페이스 섹션을 참조하십시오.
마지막으로 VM 탭은 JVM 인수 및 현재 클래스 경로를 포함하여 Java 애플리케이션이 실행 중인 환경에 대한 정보를 제공합니다.
JConsole 문제점 해결
JConsole은 Swing 애플리케이션입니다. 모니터할 Java 어플리케이션과 동일한 워크스테이션에서 JConsole을 실행하면 Java 어플리케이션의 성능에 영향을 줍니다. JConsole을 사용하여 원격 워크스테이션에서 실행 중인 JVM에 연결하면 애플리케이션 성능에 미치는 영향을 줄일 수 있습니다.
JConsole은 Java 애플리케이션이므로 JConsole을 시작하는 애플리케이션을 통해 –J접두부를 붙여 Java 명령행 옵션을 전달할 수 있습니다. 예를 들어, JConsole이 사용하는 최대 힙 크기를 변경하려면 명령행 옵션 -J-Xmx< size>를 추가하십시오.
JConsole은 Attach API를 사용하여 애플리케이션에 연결하며 다른 J9 가상 머신에만 연결할 수 있습니다. JConsole을 사용하여 원격 애플리케이션을 모니터할 때 문제점이 발생하는 경우 근본 원인은 Attach API일 수 있습니다. 문제점을 진단하려면 Java 연결 API의 내용을 참조하십시오.
알려진 제한사항
- 로컬 프로세스 목록 사용
- 로컬 프로세스 목록이 작동하지 않습니다. 원격 프로세스 텍스트 입력 필드에서 localhost:<port> 를 사용하여 로컬 JVM에 연결하십시오.
- 개요 탭의 CPU 사용
- CPU 사용 표시가 작동하지 않습니다.
추가 정보
JConsole및 표시되는 값의 정의에 대한 자세한 정보는 Oracle 문서에서 https://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html 의 내용을 참조하십시오.