슬기로운 개발생활

VisualVM Remote 연결로 JVM 메모리 사용량 모니터링 하기

by coco3o
반응형

VisualVM은 JVM 기반 애플리케이션의 성능을 실시간으로 분석하기 위해 주로 사용하는 오픈소스 기반의 GUI 툴이다.

 

운영 환경

VisualVM - 2.1.7

OpenJDK - 11.0.21

Linux - CentOS7

WAS - Apache Tomcat 9.0.54

 

VisualVM 다운로드

JDK 1.7 이상의 경우 JAVA_HOME/bin 밑에 jvjsualvm.exe 파일이 포함 되어 있다.

별도로 필요할 경우 아래 링크를 통해 다운로드 받자.

https://visualvm.github.io/

 

VisualVM 간단 설명

  • Local
    • 현재 로컬 컴퓨터에 JVM으로 돌아가는 Application 목록 및 pid
  • Remote
    • 로컬 컴퓨터가 아닌 다른 서버에 있는 Application 목록 및 pid
  • VM CoreDumps
    • 코어덤프 파일을 열어둔 목록 및 pid
  • Snapshots
    • Application 데이터의 스냅샷 파일 목록

 

VisualVM 원격 연결 방법

1. setenv.sh 파일을 생성하여 JMX Remote 설정을 추가한다.

vi setenv.sh
# !/bin/bash

CATALINA_OPTS="-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=127.0.0.1"

 

  • -Dcom.sun.management.jmxremote=true \
    • 모니터링 활성화
  • -Dcom.sun.management.jmxremote.port=[port] \
    • JMX 원격 접속을 위한 포트 설정
  • -Dcom.sun.management.jmxremote.ssl=false \
    • SSL 접속 설정
  • -Dcom.sun.management.jmxremote.authenticate=false \
    • 접속 인증 설정 (활성화시 인증 관련 추가 설정 필요)
  • -Djava.rmi.server.hostname=[ip]
    • 원격지 ip

 

2. 설정한 port 번호는 아래 명령어로 연결 허용 여부를 판단해야 한다.

natstat -anl | grep [port]

만약 막혀 있다면 iptables 설정으로 port를 열어줘야 한다

# 1099 port 허용
iptables -I INPUT -p tcp --dport 1099 -j ACCEPT
# 추가한 설정 조회
iptables -nL
# 정책 저장
service iptables save
# iptables 재시작
service iptables restart

 

3. Tomcat을 구동한다.

 

4. VisualVM에서 Remote > Add Remote Host... 입력창이 뜨면 원격지의 IP를 입력

 

5. 등록한 Host > Add JMX Connection... 입력창이 뜨면 JVM 등록시 설정한 port 입력한 후 OK

 

6. 완료

 

반응형

블로그의 정보

슬기로운 개발생활

coco3o

활동하기