各位大神,求解~~为什么指定了jmx_port之后,kafka会再随机启一个端口监听,然后client访问jmx_port建立连接之后,通讯却用的那个随机端口?能否指定那个随机端口?

解决方案 »

  1.   

    已经解决^_^
    指定这个com.sun.management.jmxremote.rmi.port
      

  2.   

    由于测试环境的kafka集群是在私有云的资源池上开的三台虚拟机,而且很多端口都没有开发,所以在搭建kafka服务的时候需要指定开放哪些端口,zk用的是kafka自带的zk启动的,我们在正常开放了2181、9092以及我们指定了JMX_PORT的9999三个端口外,发现远程监控程序无法连接kafka的JMX进行监控,于是我们看了一下kafka占用的端口:ss -ltnp | grep ${kafka_process_pid}发现除了9092和9999之外,kafka又开了两个端口.....我们尝试去打开了其中一个,发现JMX可以正常连接了.....然后我们又重启了服务,发现新开的端口变了,是随机指定的.......于是,由于必须要指定端口开放,所以我们想办法去更改配置指定这个端口:操作如下:修改${KAFKA_HOME}/bin/kafka-server-start.sh中的内容:在 export KAFKA_HEAP_OPTS = "-Xmx1G -Xms1G"里面添加-Dcom.sun.management.jmxremote.rmi.port=9999修改后的内容为:export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G -Dcom.sun.management.jmxremote.rmi.port=9999"这样就指定了jmxremote.rmi.port=9999和JMX_PORT指定为一个,这样就开一个端口可以使用了,但是启动服务的时候发现,之前随机产生的两个端口,确实有一个不见了,也就是指向了9999,但是依然还有另外一个端口随机产生,但是却并不影响远程连接JMX,于是查了一些资料,发现了这是JAVA的一个bug,为JDK-8035404:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8035404因为暂时不影响JMX使用,所以也就看了一下说明,没有管它。