• JConsole&VisualVM监控总结


    简介
    JConsole(以下写作jconsole),VisualVM(以下写作jvisualvm )
    都是比较好的JVM调优工具,且都为JDK自带,可在命令行直接启动。

    监控示例
    Server端(需要监控的主机)配置
    设置临时JAVA参数

    export JAVA_OPTS="
    -Dcom.sun.management.jmxremote.port=<port>
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    -Djava.rmi.server.hostname=<server-ip>"
    1
    2
    3
    4
    5
    注意:-Djava.rmi.server.hostname参数也可不添加,但要确保hostname -i得到的是本机的真实ip,而不是127.0.0.1。

    启动相应的JAVA程序

    java-app start
    1
    也可以直接将JAVA配置附加到java程序启动命令
    的后面,即java-app start -Dcom.sun.management.jmxremote.port=<port> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<server-ip>。

    Client端(监控主机)配置
    在Client端启动jconsole或jvisualvm,并添加连接参数”server-ip:port”即可开始监控,这两个参数值请保持与上面的配置值一致。

    适用场景
    监控JAVA程序
    若使用jconsole,则官方文档见Java SE Monitoring and Management Guide,其余文章见参考1-4。
    若使用jvisualvm,则见参考博文5-8。

    监控TomCat
    若使用jconsole,请见参考文章3,9,10。使用jvisualvm,请见参考博文11。

    监控Flume
    Flume传输数据时,需要配置合理的Java参数值和数据传输参数值,否则很容易出现错误,见Flume使用笔记 。此时对Flume程序进行监控显得尤为重要。

    启动flume程序并开启监控

    bin/flume-ng agent -n flumedn -f collect_data_flume.conf
    -Dcom.sun.management.jmxremote.pt=8999
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    -Djava.rmi.server.hostname=datanode5
    1
    2
    3
    4
    5
    使用jconsole或jvisualvm监控(这里使用jconsole)

    创建连接

    整体查看
    在下图中可以看到整个进程进行中,内存等的占用情况。

    查看线程

    查看MBeans
    这块比较重要,通过观察下图中channel的各属性值,为flume的各项数据传输参数设置提供依据。比如若ChannelFillPercentage一直接近100%,则此时应将ChannelCapacity调大一些。

    jconsole 用户名和密码设置

    JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k 

    -Djava.rmi.server.hostname=172.20.30.15 

    -Dcom.sun.management.jmxremote 

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

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

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

    -Dcom.sun.management.jmxremote.pwd.file=/usr/local/java/jdk1.7.0_79/jre/lib/management/jmxremote.password 

    -Dcom.sun.management.jmxremote.access.file=/usr/local/java/jdk1.7.0_79/jre/lib/management/jmxremote.access"

     

    亲测可用命令:

     

    java -Dfile.encoding=UTF-8

    -Djava.rmi.server.hostname=192.168.1.51

    -Dcom.sun.management.jmxremote.pwd.file=jmxremote.password

    -Dcom.sun.management.jmxremote.access.file=jmxremote.access

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

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

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

    -Xms1024M -Xmx1024M

    -Xbootclasspath/a:deploy -jar deploy/codex-game.jar

     

    jmxremote.password文件:

    user user

    admin admin

     

    jmxremote.access文件:

    user readonly

    admin readwrite

    create javax.management.monitor.*,javax.management.timer.*

    unregister

  • 相关阅读:
    关于项目管理的几点建议
    网站性能优化之服务端(一)
    HP CQ35 Windows7声卡驱动安装不上问题
    ubuntu双系统启动时卡死解决办法
    第十九周练习题
    第十六周作业练习题
    第十七周练习题
    第十八周练习题
    第十五周练习题
    第十四周练习题
  • 原文地址:https://www.cnblogs.com/xingchong/p/9775243.html
Copyright © 2020-2023  润新知