JMX(Java Management Extensions) 란 무엇인가?
2026. 7. 31. 15:06
JMX(Java Management Extensions)는 실행 중인 Java 애플리케이션이나 JVM을 모니터링하고 관리하기 위한 표준 기술이다

 

쉽게 말하면:

Java 서버 내부 상태를 외부 관리 도구에서 조회하거나 일부 설정을 변경할 수 있게 해주는 관리 인터페이스이다.

JMX로 확인할 수 있는 것

  • JVM Heap 메모리 사용량
  • Metaspace 사용량
  • GC 횟수와 소요 시간
  • Thread 개수와 상태
  • CPU 사용량
  • 클래스 로딩 수
  • 데이터베이스 커넥션 풀 상태
  • Tomcat 세션 수
  • 요청 처리 건수
  • 애플리케이션이 직접 노출한 상태값

Oracle의 shared pool은 DB 메모리이고, JMX는 주로 Java 애플리케이션과 JVM 상태를 확인하는 용도

기본 구조

JMX는 주로 MBean이라는 관리 객체를 사용

Java 애플리케이션
 └─ MBean Server
      ├─ Memory MBean
      ├─ Thread MBean
      ├─ Garbage Collector MBean
      ├─ DataSource MBean
      └─ 사용자 정의 MBean
 

외부 도구가 MBean Server에 연결해 값을 조회

대표 도구는 다음과 같다.

  • jconsole
  • jvisualvm
  • JMC, Java Mission Control
  • Prometheus JMX Exporter
  • 일부 APM 솔루션

실제 예시

Tomcat이나 TomEE 서버에서 JMX를 열어두면 다음과 같은 내용을 볼 수 있다.

Heap Memory: 650MB / 1024MB
Active Threads: 85
DB Active Connections: 18
DB Idle Connections: 12
Loaded Classes: 14,520
Full GC Count: 7
 

예를 들어 장애가 났을 때 JMX를 보면:

  • Heap이 계속 증가하는지
  • Full GC가 반복되는지
  • Thread가 특정 상태에서 멈춰 있는지
  • DB 커넥션 풀이 모두 사용 중인지
  • 요청 처리 스레드가 고갈됐는지

등을 확인할 수 있다.

로컬 접속

Java가 실행 중인 서버에서 jconsole을 실행하면 로컬 JVM 프로세스가 보일 수 있습니다.

 
jconsole
 

또는 jvisualvm을 사용할 수 있습니다.

 
jvisualvm
 

원격 JMX 설정 예시

Java 기동 옵션에 다음과 같이 설정할 수 있다.

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.rmi.port=9010
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=192.168.0.10
 

접속 구조는 다음과 같다.

관리자 PC
   ↓ TCP 9010
Java 서버의 JMX 포트
   ↓
JVM 내부 MBean 조회
 

다만 아래 설정은 인증과 암호화를 끄는 것이므로 운영 환경에서는 그대로 사용하면 위험

 
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
 

운영에서는 보통 다음 중 하나가 필요

  • JMX 인증 설정
  • SSL 적용
  • 방화벽으로 접근 IP 제한
  • 내부망에서만 접근
  • SSH 터널 사용
  • Prometheus JMX Exporter처럼 직접 원격 JMX를 노출하지 않는 방식

JMX와 APM 차이

구분 JMX APM
목적 JVM과 애플리케이션 관리·조회 서비스 전체 성능 추적
확인 범위 Heap, Thread, GC, 커넥션 풀 거래 추적, 응답시간, SQL, 에러
데이터 저장 기본적으로 실시간 조회 보통 과거 이력 저장
설정 JVM에서 기본 제공 별도 Agent 설치가 많음
예시 JConsole, VisualVM Scouter, Pinpoint, Jennifer

JMX는 원천 데이터를 제공하는 인터페이스이고, APM은 그 데이터를 수집·저장·분석해서 화면으로 보여주는 도구에 가깝다.

'Back-End > Java' 카테고리의 다른 글

Ant 빌드와 MAVEN 빌드 차이  (0) 2026.02.25
JKS(Java KeyStore) 파일 과 JKS 의 키체인  (0) 2026.02.09
JAVA 메타스페이스  (0) 2025.09.17
자바 8 / 17 / 21 버전별 차이점  (0) 2025.06.04
Junit  (0) 2024.12.05