개발용 AWS EC2의 Spring 웹 서비스에 SSH 터널링 방식으로 JMX 설정을 추가하여 재기동하고
로컬 PC에서 VisualVM을 사용하여 원격 JVM의 메모리 사용과 메소드 호출 발생 건수 확인
- VisualVM이란?
- VisualVM 설치와 원격 서버 JMX 설정
- VisualVM 설치
- 원격 서버 JMX 설정
- AWS EC2 인바운드 규칙 추가(JMX가 들어올 포트 열어주기)
- VisualVM 연결 및 사용
- VisualVM의 장단점
VisualVM은 JVM을 실시간으로 모니터링 할 수 있는 오픈소스 기반 GUI 툴 입니다.
- 로컬에서 실행중인 애플리케이션 뿐만 아니라 원격에서 실행중인 애플리케이션 또한 모니터링 가능
- 메모리 사용량 모니터링
- 쓰레드 상태 모니터링
- 가상머신에 로드된 클래스 데이터 모니터링
위 링크에서 다운로드 후 실행
JMX(Java Management eXtensions)는 애플리케이션 및 서비스 지향 네트워크 등을 감시 관리하기 위한 도구를 제공하는 자바 API
JMX를 사용하여 JVM에서 실행중인 자바 기반의 애플리케이션을 모니터링 및 관리
JMX Remote 설정을 추가한 실행 스크립트 생성 run.sh
java \
-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.port=[JMX PORT] \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=[REMOTE SERVER IP] \
-Dcom.sun.management.jmxremote.rmi.port=[JMX PORT] \
-jar [실행할 파일명].jar
run.sh
를 실행해서 원격 서버에 Spring 웹 서비스 실행
포트번호 1099로 설정
- Add Remote Host… 클릭하여 Remote Host 추가
- Host name 입력
- 원격 서버(aws ec2) 퍼블릭 IPv4 주소 입력
- Add JMX Connection… 클릭하여 원격 서버와 JMX 연결
- 원격 서버 IP는 이미 입력되어 있고, 이 전에 인바운드 규칙에서 추가한 1099 포트번호를 입력
- JVM의 전반적인 상태를 시각적으로 확인할 수 있다.
- Heap Dump, Thread Dump 등을 GUI 기반으로 생성할 수 있다.
- 분석 보다는 모니터링에 최적화 되어있는 것으로 보인다.
- Heap Dump, Thread Dump로 Memory와 Thread 상태를 분석할 때 별도의 툴을 사용한다.