VisualVM를 이용하여 remote로 jvm 및 성능을 모니터링 하자!

Karim·2022년 1월 25일
8
post-thumbnail

1. Version

💬

  • VisualVm : 2.1.2
  • OpenJDK : 1.8.0_241
  • linux : CentOS Linux release 7.9.2009 (Core)

2. VisualVM이란

  • JVM으로 구동되는 Application의 ThreadGC 사용량모니터링할 수 있는 JDK 도구
  • 개발한 모듈의 성능시각적으로 확인할 수 있다.

3. 실행 방법

💡 실행 방법

  • OpenJDK를 설치하면 %JAVA_HOME%\bin dir에 jvisualvm.exe 파일이 있다.

3. 도구 간단한 설명

📜 VisualVM 첫 화면

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

4. 원격 서버 Application 실행 sh 생성

📜 run.sh 추가 내용 설명

  • Dcom.sun.management.jmxremote.local.only
    localOnly가 true 켜져있으면 remote 연결이 안될 수 있다.
  • Dcom.sun.management.jmxremote.port
    remote port설정
  • Dcom.sun.management.jmxremote.ssl
    ssl접속설정
  • Dcom.sun.management.jmxremote.authenticate
    접속인증 설정. true하면 인증관련된 추가 설정 필요
  • Djava.rmi.server.hostname
    remote서버 ip
  • Dcom.sun.management.jmxremote.rmi.port
    rmi포트 설정
  • jar
    모니터링 할 Application jar 명

📜 run.sh 생성 및 내용 추가

# !/bin/bash


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=[붙을 서버 IP] \
-Dcom.sun.management.jmxremote.rmi.port=[JMX PORT 설정] 

5. 원격 서버 remote 실행

📜 Remote 접속

📜 Add JMX Connection

  • 해당 remote ip를 우측 클릭 한다.

  • [서버 PORT] 를 넣는다.
    IP는 자동적으로 적혀 있음

📜 remote Server JMX Connection

  • 접속 완료!!

6. 원격 서버 remote Monitor

📜 모니터 화면


📌 여담

  • 저는 docker 안에 모듈이라서 포트포워딩 때문에 많이 애 먹었어요 ㅠㅠ
    심지어 모듈도 logstash라서 logstash는 logstash.lib.shJDK에 -Dcom 넣어야 해요

📚 참고

profile
나도 보기 위해 정리해 놓은 벨로그

1개의 댓글