全部博文(150)
分类: 系统运维
2017-06-08 10:59:44
接上篇zabbix监控tomcat出现"Connection refused to host: 127.0.0.1"的故障解决继续了解相关的jmx的知识,上次故障解决后,又发现了新的情况。
tomcat监听了5个端口
其中 51024 是http访问端口 52024 是jmx监听端口 53024 是shutdown端口 剩余两个端口不知用处,和开发沟通,开发也未在程序内监听,又观察其他主机上部署的该应用, 发现也有两个不知用途的端口在监听。
如下所示
..... ps -ef | grep tripWeb tomcat 20994 1 4 Jun05 ? 01:08:31 /usr/java/default/bin/java -Xms1024M -Xmx2048M -server -XX:PermSize=256M -XX:MaxPermSize=512M -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager ...... lsof -p 20994 |grep LISTEN java 20994 tomcat 16u IPv4 247485728 0t0 TCP *:52373 (LISTEN) java 20994 tomcat 17u IPv4 247485729 0t0 TCP *:52024 (LISTEN) java 20994 tomcat 18u IPv4 247485730 0t0 TCP *:57373 (LISTEN) java 20994 tomcat 37u IPv4 247478500 0t0 TCP *:51024 (LISTEN) java 20994 tomcat 68u IPv4 247485737 0t0 TCP localhost:53024 (LISTEN)
抓包看看两个端口通讯内容
发现52373端口通讯内容是jmx相关的数据,具体本例是zabbix的java-gateway和tomcat之间监控数据通讯。
tcpdump -X -nnn port 52373 ...... 17:11:23.903009 IP 10.0.1.2.43200 > 10.0.1.22.52373: Flags [P.], seq 4074:4215, ack 10549, win 376, options [nop,nop,TS val 3942015991 ecr 4132106950], length 141 0x0000: 4500 00c1 04bb 4000 4006 1f65 0a00 0102 E.....@.@..e.... 0x0010: 0a00 0116 a8c0 cc95 0c50 7768 9869 36e9 .........Pwh.i6. 0x0020: 8018 0178 b3f4 0000 0101 080a eaf6 63f7 ...x..........c. 0x0030: f64a f2c6 50ac ed00 0577 2200 3f44 6763 .J..P....w".?Dgc 0x0040: 3853 7066 4c16 4400 0001 5c77 0823 cd57 8SpfL.D...\w.#.W 0x0050: 66ff ffff fff0 e050 0a39 4d72 1573 7200 f......P.9Mr.sr. 0x0060: 1b6a 6176 6178 2e6d 616e 6167 656d 656e .javax.managemen 0x0070: 742e 4f62 6a65 6374 4e61 6d65 0f03 a71b t.ObjectName.... 0x0080: eb6d 15cf 0300 0070 7870 7400 2a6a 6176 .m.....pxpt.*jav 0x0090: 612e 6c61 6e67 3a74 7970 653d 4d65 6d6f a.lang:type=Memo 0x00a0: 7279 506f 6f6c 2c6e 616d 653d 5053 2050 ryPool,name=PS.P 0x00b0: 6572 6d20 4765 6e78 7400 0555 7361 6765 erm.Genxt..Usage 0x00c0: 70 p ......
57373的抓包数据,持续抓包半小时一直无数据
tcpdump -X -nn dst host 10.0.1.22 and dst port 57373
-Dcom.sun.management.jmxremote.port
该参数指定端口后java会开两个随机端口,一个作为jmx的数据通讯端口,另外一个作为jconsole的本地连接端口,如上面 52373为jmx通讯端口,57373为jconsole通讯端口
jmx的监听和数据通讯端口合并方法,下面两个参数设置相同端口即可(java7 update25起有效)
com.sun.management.jmxremote.port com.sun.management.jmxremote.rmi.port
jconsole 端口禁止监听方法
启动参数加上 -XX:+DisableAttachMechanism