相关文章:
JVisualVM 除了监控本地的 Java 进程外,还可以监控远程的 Java 进程
一、使用 JMX 远程监控 Tomcat
-
修改 catalina.sh
-
修改 Tomcat 的启动脚本,将 JMX 的相关参数添加进 Tomcat 的启动命令中,并启动 Tomcat
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9997 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=xxxxxxxxx"
-
参数说明
参数 含义 -Dcom.sun.management.jmxremote 开启 JMX -Dcom.sun.management.jmxremote.port 指定远程连接端口 -Dcom.sun.management.jmxremote.authenticate 是否启用验证 -Dcom.sun.management.jmxremote.ssl 是否启用 ssl -Djava.net.preferIPv4Stack 是否优先使用 IPv4 -Djava.rmi.server.hostname 指定远程连接地址
-
-
连接远程 Tomcat
-
如上所示,先在远程标签中添加远程主机地址
-
然后右击远程主机地址,点击添加 JMX 连接,输入之前设置的远程连接端口 (这里是 9997),点击确定即可
-
-
查看 Tomcat 运行情况
- 如上所示,此时我们就可以将 Tomcat 当成一个本地 Java 进程来看待了,可以实时监控其内部的运行状态
二、使用 JMX 远程监控普通 Java 进程
-
修改 jar 包的启动命令,添加 JMX 的相关参数即可,其余操作与远程监控 Tomcat 相同
nohup java \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=9996 \ -Dcom.sun.management.jmxremote.rmi.port=9996 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -Djava.net.preferIPv4Stack=true \ -Djava.rmi.server.hostname=xxxxxxxxx -jar xxx.jar &
-
需要注意的是,相比较启动 Tomcat 时添加的 JMX 参数,启动 jar 包时需要额外添加
-Dcom.sun.management.jmxremote.rmi.port
参数,将其端口与-Dcom.sun.management.jmxremote.port
参数设置为一致即可 -
这是因为 JMX 在远程连接时,会随机开启一个 RMI 端口来作为连接的数据端口,如果不指定,可能会导致连接失败,我们可以使用
-Dcom.sun.management.jmxremote.rmi.port
参数来指定该端口
-