Java Mission Control(JMC)
可用于本地/远程监控JVM的运行状态的管理工具,如果在WINDOWS环境下,程序路径:$JAVA_BIN/jmc.exe
远程连接JVM
本地连接比较简单这里就不在赘述,远程连接JVM,我在这里利用VMWare工具进行模拟,过程中遇到一些问题,值得注意的。
远程机器环境:
1. IP:192.168.91.129
2. Java版本:SE 8u92
3. 系统版本:openSUSE Leap 42.1 (x86_64)
首先,远程机器被监控的程序需要开启调试端口,在执行java命令行中加入以下属性,属性没有以ssl安全认证方式连接的,案例中启动监听端口为7091
-Dcom.sun.management.jmxremote.port=7091
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
然后,启动JMC客户端->“新建连接”->输入远程机器IP和port->点击“完成”即可。
常见问题
上述的操作方式非常简单,但往往事与愿违,总有些坎坷,我连接时候就遇到了下面情况,“Connection refused to host:127.0.0.1”
为什么连接远程机器,却报连接127.0.0.1本地IP错误?原来JMC连接机器需要远程机器解析机器名后返回IP给JMC来确认连接地址,即使写死了IP也是这样的过程,所以定位是远程机器的路由信息表有异常,返回127.0.0.1。
shell>hostname -i
127.0.0.1
果然返回了内部IP,而不是192.168.91.129,需要修改改下
shell>vi /etc/hosts
#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server.
# Syntax:
#
# IP-Address Full-Qualified-Hostname Short-Hostname
#
127.0.0.1 localhost
# 增加了机器名路由信息
192.168.91.129 linux-br8i
重启机器,JMC重新连接,OK
shell>reboot