JMX

作者: 卫渐行 | 来源:发表于2017-06-05 12:59 被阅读242次

    本文参考 http://www.jianshu.com/p/414647c1179e ;因为jmx配置都是按照下面的步骤:但是同时我遇到两个问题:
    一:离线分析JMX里面函数执行情况加上:-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
    二: 本地一直联系不上分析的服务器,然后加上这句:-Djava.rmi.server.hostname=host ip ;然后就可以了

    JMX全称Java Management Extensions, 为Java应用提供管理扩展功能。在Java 5的时候引入
    概念
    Name
    Description

    MBean
    全称为Managed Bean, 你可以实现一个MBean来JMX提供管理内容

    MBean Server(也叫JMX Agent)
    提供集中注册管理MBean功能,允许远程通过他代理操作MBean

    JMX Connectors
    通过实现不同的通讯协议,来允许远程访问

    Jconsole
    一款JMX图形客户端,运行用户访问本地或者远程的JMX,默认包含在Java SDK工具中

    Referering Java Opts
    启动Java可以赋予JVM Machine一些参数,例如设置运行内存堆栈的大小。此处列举一些有关JMX的相关参数
    参数名
    类型
    描述

    -Dcom.sun.management.jmxremote
    布尔
    是否支持远程JMX访问,默认true

    -Dcom.sun.management.jmxremote.port
    数值
    监听端口号,方便远程访问

    -Dcom.sun.management.jmxremote.authenticate
    布尔
    是否需要开启用户认证,默认开启

    -Dcom.sun.management.jmxremote.ssl
    布尔
    是否对连接开启SSL加密,默认开启

    -Dcom.sun.management.jmxremote.access.file
    路径
    对访问用户的权限授权的文件的路径,默认路径JRE_HOME/lib/management/jmxremote.access

    -Dcom.sun.management.jmxremote. password.file
    路径
    设置访问用户的用户名和密码,默认路径JRE_HOME/lib/management/ jmxremote.password

    例如,你需要启动一个常驻后台的springboot程序(比如app.jar),如何开启一个支持远程访问的JMX,可以尝试下面的命令
    java -jar app.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10080 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

    对于关于JMX相关的参数你配置这些就够了,就可以使用Jconsole连接,


    Jconsole Panel

    这个仅仅限于你在本地访问,也就是说远程访问。
    你需要支持远程访问协议,也就是前面描述的JMX Connector,可以添加一个参数
    -Djava.rmi.server.hostname=服务器的IP地址或者域名

    就可以开启远程RMI协议访问,正常情况此时应该就能正常看到类似下面的界面


    JMX Runtime

    不过在我的工作做,此时发现仍然不能再远程访问,查询了相关资料后,有可能是防火墙的原因屏蔽了相关接口。在Java启动时,JMX会绑定一个接口,RMI也会绑定一个接口,在复杂网络环境下,有可能你通过打开防火墙允许了JMX端口的通过,但是由于没有放行RMI,远程连接也是会失败的。
    这是因为JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,很有可能这个端口会被防火墙给阻止,以至于连接超时失败。好在在Java7u25版本后可-Dcom.sun.management.jmxremote.rmi.port=端口号
    来定死这个端口,好消息是,你可以将这个端口和jmx.port
    的端口设置成一个端口,这样防火墙策略就只需要同行一个端口就可以了。
    额外内容:
    Sample for authtication

    password filemonitorRole password1controlRole password2

    access filemonitorRole readonlycontrolRole readwrite

    References
    http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html
    http://stackoverflow.com/questions/20884353/why-java-opens-3-ports-when-jmx-is-configured/21552812#21552812
    http://stackoverflow.com/questions/7163173/jmx-enabled-java-application-appears-to-open-a-random-high-order-port-when-jmx-c
    http://jingyan.baidu.com/article/acf728fd3c568af8e410a37a.html

    相关文章

      网友评论

          本文标题:JMX

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