Jconsole 远程连接Java服务

概述

Jconsole是一个类似Windows任务管理器的图形化展示工具。可以监控Java服务的CPU、内存、线程、对象等各项指标。

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"
  • 其中192.168.182.53是Java服务本机的IP地址;12345是Java对外服务的端口号。
  • -Dcom.sun.management.jmxremote.rmi.port=12345 这个很关键。原因可参见:JCONSOLE的连接问题

除了8000正常端口外java还开了一个端口,而JConsole连接过来的是另一个端口,而且重启后这个端口是随机的,每次启动JVM都会变。tcpdump抓包发现每次都连接8000之后连另外随机的端口。没办法暂时防火墙只好开高端口。

可能rmi.port参数就是所谓的**随机端口**?(Java小白乱猜~)
  • 不需要更改/etc/hosts文件。

配置Java服务器的防火墙

允许其他机器访问本机的12345端口。

测试环境

Java服务环境:

  • OS: CentOS Linux release 7.0.1406 (Core)
  • JDK: 1.8.0_181

Jconsole 环境:

  • OS:Windows10 1803
  • JDK: 1.8.0_172

参考

转载于:https://my.oschina.net/u/1864567/blog/1862862

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值