[자바성능튜닝이야기] 20. 모니터링 API인 JMX
20. 모니터링 API인 JMX
JMX(Java Management Extensions) 자바기반의 모든 애플리케이션을 모니터링하기 위해서 만든 기술
JDK 5.0부터 본격적으로 지원됨.
JMX의 단계
- 인스트루먼테이션 레벨(Instrumentation Level)
하나 이상의 MBeans혹은 MBeans를 제공한다. 필요한 리소스들의 정보를 취합하여 에이전트로 전달하는 역할 - 에이전트 레벨(Agent Level)
리소스를 관리하는 역할, 보통 에이전트는 모니터링이 되ㅏ는 서버와 같은 장비에 위치한다. - 분산 서비스 레벨(Distributed Services Level)
JMX 관리자를 구현하기 위한 인터페이스와 컴포넌트를 제공한다. - 추가 관리 프로토컬 API들(Additional Management Protocol APIs)
MBeans는 4가지 종류가 있다.
- 표준 MBean(Standard MBean) 변경이 많지 않은 시스템을 관리하기 윈한 MBean이 필요할 경우 사용한다.
- 동적 MBean(Dynamic MBean) 애플리케이션이 자주 변경되는 시스템을 관리하기 위한 MBean이 필요한 경우 사용한다.
- 모델 MBean(Model MBean) 어떤 리소스나 동적으로 설치가 가능한 MBean이 필요한 경우 사용한다.
- 오픈 MBean(Open MBean) 실행 중에 발견되는 객체의 정보를 확인하기 위한 MBean이 필요할 때 사용한다. JMX의 스펙에 지정된 타입만 리턴해야 한다.
JConsole : Sun에서 제공하는 JMX 모니터링용 툴이다. JDK 5.0 이 이상 부터 포함되어 있다.
기본적으로 힙 메모리 사용량, 스레드 개수, 로딩된 클래스 개수, CPU 사용률
원격지에서 사용하려면
-Dcom.sun.management.jmxremote.port=9003
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false