关于JMX三个端口的说明

JMX(Java Management Extensions) 是一个为应用程序提供管理功能的框架。也就是应用程序暴露一个端口,可以通过这个端口,查看程序的状态,修改程序的配置。

网上关于程序员四个层次,很形象说明JMX的功能。

  1. 程序新手,配置是写死在程序中,修要修改时就去改代码,然后重新编译发布。
  2. 程序熟手,配置在文件中(JAVA一般都是properties文件),修要修改时就去修改配置文件,但还是必须重启系统,以便读取配置文件里最新的值。
  3. 程序好手,则会写一段代码,把配置值缓存起来,系统在获取的时候,先看看配置文件有没有改动,如有改动则重新从配置里读取,否则从缓存里读取。
  4. 程序高手,则懂得物为我所用,用JMX把需要配置的属性集中在一个类中,然后写一个MBean,再进行相关配置。另外JMX还提供了一个工具页,以方便我们对参数值进行在线修改。

一开始我认为JMX只有一个端口,实际是开了三个端口,分别是:

  1. 一个是JMX端口(需要指定),JMX远程连接端口。
  2. 一个是RMI端口(默认随机),实际通信用的端口。
  3. 一个是本地服务端口(随机),用于本地jstat、jconsole连接用,本地使用,我们不用理会。

程序连接,是先连上JMX端口,获取RMI端口,再连接RMI端口,问题就出在RMI端口上,一般没有配置指定端口号,程序默认会随机分配一个端口,容易让人忽略,在配置防火墙时只配了JMX端口,导致JMX连接不上。而且RMI端口是随机的,也不好配防火墙。

其实这个RMI端口是可以指定的,而且可以指定与JMX一致的端口,这样在配置防火墙时就方便多了,只需开放一个端口。
具体的配置是启动参数增加 -Dcom.sun.management.jmxremote.rmi.port=xxxx,目前常见的开源软件都支持这个配置,如Kafka,Tomcat等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值