jconsole与jvisualvm监控
1.介绍
jconsole.exe
和 jvisualvm.exe
都是 JDK 自带的图形化监控工具 ,用于 实时观察和分析运行在 JVM 上的 Java 应用的性能指标。它们的主要用途如下:
✅ 1. jconsole.exe(Java Monitoring and Management Console)
📌 作用:
- 实时监控 JVM 的运行状态 :
- 堆内存、线程、类加载、CPU 使用率
- GC 活动(次数、耗时)
- MBean(管理 Bean)信息
- 支持远程连接:可监控 Linux/Windows 上的远程 JVM
- 轻量级:启动快,适合快速排查问题
📊 界面示例:
- 概览页:堆、线程、类、CPU 四条曲线
- 内存页 :堆内存分代(Eden/Survivor/Old)使用情况;检测死锁
- 线程页:线程总数、死锁检测
- 类页:已加载类数量
- MBean页:查看和操作已注册的 MBean(如 Tomcat、Spring 等暴露的指标)
✅ 2. jvisualvm.exe(Java VisualVM)
📌 作用:
- jconsole 的"增强版" ,功能更强大:
- 支持 CPU/内存采样与剖析(Profiling)
- 支持 堆转储(Heap Dump) 和 线程转储(Thread Dump)
- 支持 插件扩展(如 Visual GC、JVM 参数分析)
- 支持 快照保存与对比
- 支持远程/本地 JVM 监控
- 支持离线分析 :可导入
.hprof
堆转储文件
📊 界面示例:
- Monitor 标签页:类似 jconsole 的实时监控
- Sampler 标签页:实时 CPU/内存采样
- Profiler 标签页:方法级性能分析(需手动启动)
- Visual GC 插件:可视化各内存分代的实时变化
✅快速排查 JVM 内存/线程问题 → 用 jconsole
- 深度分析 性能瓶颈(如方法耗时、内存泄漏) → 用
jvisualvm
- 两个工具都在 JDK 的
bin
目录下,无需安装,随装随用。
2.配置
在 Windows 本地 使用 jconsole.exe 或 jvisualvm.exe 监控运行在 Linux 服务器 上的 JVM 进程,你需要配置 JMX 远程连接。
完整配置步骤:
✅ 步骤一:在 Linux 上启用 JMX 远程监控
配置文件:/usr/local/tomcat/bin/catalina.sh
启动你的 Java 应用时,添加以下 JVM 参数:
bash
JAVA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.net.preferIPv4Stack=true
-Djava.rmi.server.hostname=192.168.126.231"
# 192.168.126.231为tomcat所在的Linux服务器IP
jmxremote.port
:JMX 连接端口。rmi.port
:必须与jmxremote.port
一致,避免 RMI 通信失败。hostname
:必须是 Linux 服务器的 公网 IP 或 可被本地解析的域名。
重启生效
✅ 步骤二:开放 Linux 服务器端口
确保云服务器的 安全组 或本地防火墙放行端口:
虚拟机的linux直接关闭防火墙即可;
bash
# 示例:开放 9999 端口
sudo firewall-cmd --permanent --add-port=9999/tcp
sudo firewall-cmd --reload
✅ 步骤三:本地连接(Windows)
在JDK的bin目录下
使用 jconsole.exe:
-
打开本地 JDK 安装目录下的
bin/jconsole.exe
。 -
选择 "远程进程"。
-
输入:
服务IP:9999
-
点击"连接",选择"不安全的连接"即可进入监控界面。
使用 jvisualvm.exe:
-
打开
bin/jvisualvm.exe
。 -
点击菜单:文件 → 添加 JMX 连接。
-
输入:
服务IP:9999
-
勾选"不要求 SSL",点击"确定"连接。