美文网首页
VisualVM远程连接失败踩坑和JMX最全配置

VisualVM远程连接失败踩坑和JMX最全配置

作者: CleverApe | 来源:发表于2019-11-06 13:01 被阅读0次

    史上最全JMX远程连接失败问题踩坑和总结,涉及多种环境:本地、局域网测试环境、线上生产环境。

    这里不介绍VisualVM的基本教程,那些随便搜一下都有,主要介绍一下博主在不同环境使用,自己遇到的坑。

    想要查看和监控JVM运行情况,VisualVM是一种不错的选择。

    VisualVM远程连接JVM,最方便的方法是通过 jmx,即在jvm启动参数增加jmx配置。

    网上大体都是如下:

    -Dcom.sun.management.jmxremote=true

    -Dcom.sun.management.jmxremote.port=8099

    -Dcom.sun.management.jmxremote.ssl=false

    -Dcom.sun.management.jmxremote.authenticate=false

    以上配置,本地环境可以,如果是远程的话,这样是不行的。

    远程连接需要增加 rmi 配置:

    -Djava.rmi.server.hostname=192.168.180.1

    注意:另外需要检查 hostname –i,看解析出来是否包含本地的IP,如是只有127.0.0.1或者其他的IP,会连接不上。

    配置正确的显示如下:

    [user ~]$ hostname -i

    127.0.0.1 192.168.180.1

    [user ~]$

    以上配置加了后,测试环境可以连接了,但是线上环境还是不行。

     继续找原因,发现是防火墙的原因屏蔽了相关接口。

            在Java启动时,JMX会绑定一个接口,RMI也会绑定一个接口,在复杂网络环境下,有可能你通过打开防火墙允许了JMX端口的通过,但是由于没有放行RMI,远程连接也是会失败的。

    这是因为JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,这个端口会被防火墙给阻止,以至于连接超时失败。在Java7u25版本后,可以使用 -Dcom.sun.management.jmxremote.rmi.port参数来指定这个端口;好消息是,你可以将这个端口和jmx.port的端口设置成一个端口,这样防火墙就只需要放行一个端口就可以了。

    增加 rmi 端口配置:

    -Dcom.sun.management.jmxremote.rmi.port=8099

    加了后,可以远程连接线上生产环境了。

    生产环境还需要注意,找运维配合开放指定 ip 和 端口的权限, netstat 查询自己配置的端口(如8099)是否已被监听,

    可以通过 telnet ip port 来检查 端口是否请求通,如:

    telnet 192.168.180.1 8099

    总结:

    JMX 最全配置:

    -Dcom.sun.management.jmxremote \

    -Dcom.sun.management.jmxremote.port=8099 \

    -Dcom.sun.management.jmxremote.local.only=true \

    -Dcom.sun.management.jmxremote.authenticate=false \

    -Dcom.sun.management.jmxremote.ssl=false \

    -Dcom.sun.management.jmxremote.rmi.port=8099 \

    -Djava.rmi.server.hostname=192.168.180.1

    References

    https://stackoverflow.com/questions/20884353/why-java-opens-3-ports-when-jmx-is-configured/21552812#21552812

    https://stackoverflow.com/questions/7163173/jmx-enabled-java-application-appears-to-open-a-random-high-order-port-when-jmx-c

    ————————————————

    版权声明:本文为CSDN博主「CleverApe」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/qq_27641935/article/details/102919542

    相关文章

      网友评论

          本文标题:VisualVM远程连接失败踩坑和JMX最全配置

          本文链接:https://www.haomeiwen.com/subject/oilubctx.html