Jconsole是一个相似Windows任务管理器的图形化展现工具。能够监控Java服务的CPU、内存、线程、对象等各项指标。html
Windows本地的Java服务能够在Jconsole启动的列表里面直接选,就能够链接上了;而大部分的Java服务都运行在没有GUI的Linux环境下,没法直接在Linux服务器上执行Jconsole命令。这时就须要在Windows上运行Jconsole远程链接到Linux服务器的Java服务了。网上有不少的教程,但经过实测发现都有问题,没法链接成功。经过不断查找资料并验证,终于找到了一个可行的配置方法,记录以下:java
JAVA_OPTS= JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.182.53" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.local.only=false"
除了8000正常端口外java还开了一个端口,而JConsole链接过来的是另外一个端口,并且重启后这个端口是随机的,每次启动JVM都会变。tcpdump抓包发现每次都链接8000以后连另外随机的端口。没办法暂时防火墙只好开高端口。bash
可能rmi.port参数就是所谓的**随机端口**?(Java小白乱猜~)
容许其余机器访问本机的12345端口。服务器
Java服务环境:jvm
Jconsole 环境:tcp