728x90
반응형

🧭 1. VisualVM 소개
VisualVM은 JDK에 포함된 jvisualvm 또는 독립 실행형 형태로 제공되는 JVM 모니터링 및 분석 도구입니다.
다음과 같은 기능을 제공합니다.
🔹 주요 기능
기능설명
| CPU / 메모리 모니터링 | 힙(Heap) / PermGen(Metaspace) 사용량, GC(Garbage Collection) 횟수 확인 |
| 스레드 상태 추적 | 실행 중 스레드, 데드락, Runnable/Waiting 상태 추적 |
| 프로파일링(Profiling) | CPU, 메서드 호출 빈도, 메모리 할당 추적 |
| Heap Dump 분석 | 힙 덤프를 시각적으로 분석하여 메모리 누수 탐지 |
| 원격 모니터링(Remote Monitoring) | 원격 서버의 톰캣 프로세스 모니터링 가능 (JMX 또는 jstatd 사용) |
⚙️ 2. Tomcat 연동 방법
(1) 로컬 톰캣
- 같은 PC에서 톰캣 실행 시 자동으로 VisualVM이 JVM 프로세스를 탐지합니다.
- 그냥 jvisualvm 실행 → “Local” 탭에서 org.apache.catalina.startup.Bootstrap 프로세스 선택하면 됩니다.
(2) 원격 톰캣
- 톰캣 실행 옵션에 JMX 포트 설정
-
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
- 톰캣 재시작 후 VisualVM에서 원격 호스트 추가
- VisualVM → Add Remote Host
- “JMX Connection”으로 hostname:9090 입력
- 원격 연결 시 방화벽 9090 포트 허용 필요합니다.
⚠️ 3. 운영 시 주의점
구분주의사항설명
| 성능 부하 | ⚠️ 실시간 프로파일링(Profiling) 시 CPU 점유율 상승 | 운영 서버에서는 “모니터링”만, 프로파일링은 테스트 환경에서만 수행 |
| 보안 | ⚠️ JMX 인증 미설정 시 누구나 접근 가능 | 운영 환경에서는 jmxremote.access / jmxremote.password 파일로 인증 필수 |
| 메모리 사용량 증가 | VisualVM 연결 시 JVM의 Metaspace와 Heap 사용량 소폭 증가 | 일시적인 영향이므로 큰 문제는 없으나, 여유 메모리 확보 권장 |
| 방화벽 설정 | ⚠️ JMX 포트 외부 노출 금지 | 내부망에서만 접근하거나 SSH 터널링을 사용 |
| Heap Dump 크기 | 대형 서비스는 Heap Dump 시 수백 MB~수 GB 발생 가능 | 운영 중에는 Heap Dump 남발 금지 — 스냅샷은 트래픽 저하 유발 가능 |
🧩 4. 권장 운영 방식
목적방법
| 개발·테스트 환경 | VisualVM을 이용해 GC 튜닝, 스레드 분석, 메모리 누수 점검 |
| 운영 환경 | 기본 JMX 연결만 유지하고, 필요할 때만 접속 |
| 장기 모니터링 | VisualVM 대신 Prometheus + Grafana 또는 JMX Exporter를 통해 안정적 시각화 추천 |
💡 팁
- 플러그인 설치로 기능 확장 가능 (Visual GC, Thread Inspector 등)
- JDK 버전별 호환성 주의 — JDK 17 이상에서는 최신 VisualVM (2.x 이상) 사용
- SSH 터널링을 이용하면 JMX 포트를 외부로 열지 않고도 원격 모니터링 가능:
-
ssh -L 9090:localhost:9090 user@your-server
📈 5. VisualVM 실무 팁
- Visual GC 플러그인 설치 → GC 동작 시각화
→ Tools > Plugins > Available Plugins > Visual GC - Heap Dump는 꼭 트래픽 낮은 시간에 수행
- 자동 모니터링은 VisualVM 대신 Prometheus + JMX Exporter 연동 추천


728x90
반응형
'Programming > JAVA' 카테고리의 다른 글
| Json String to VO (0) | 2023.04.01 |
|---|---|
| 이클립스 화면설계 플러그인 (0) | 2023.04.01 |
| WEB 크롤링 - Selenium (0) | 2023.03.29 |
| WIN10 ipconfig wsl ip tunneling (0) | 2023.03.29 |
| Windows에서 JNA를 사용하여 Java에서 메모리를 조작하는 방법 (0) | 2023.03.29 |