zoukankan      html  css  js  c++  java
  • java自带的监控工具VisualVM(二)远程监控

    ps:尝试了网上的几个网友提供的方法,始终不得其法,汇总后,终于尝试成功!将一些需要注意的细节也记录下来以后备用!

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.
    这个工具就在JAVA_HOMEin目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面.

    要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, Visualvm目前支持两种remote connection方式.
    分别是jstatd和JMX方式: 这里主要介绍的是通过JMX方式.

    JMX方式:

    首先讲述需要账号密码的方式:

      1.修改远程需要被监控机子的jdk配置文件;
    •   进入JAVA_HOMEjrelibmanagement
    •   拷贝一份jmxremote.password.template并改名为jmxremote.password到当前目录,并去掉# monitorRole  QED 和 # controlRole  R&D 这两行  前面的注释符号.
    •   这里是设置 远程登录的账号和密码。比如默认的 账号是 monitorRole 和controlRole,其对应的密码分别是 QED和 R&D;可以自定义用户名密码,我自  定义了一个账号密码都为 root的账号。如图:

        

    •   同时需要修改 当前目录里的jmxremote.access 文件,该文件可以控制访问权限;如图:

        

      2.修改远程机器上需要被监控的程序的配置文件 (我这里是监控Tomcat容器内部署的应用).

       修改TOMCAT_HOME/bin/catalian.sh文件;

        在第一行加入如下语句:

        export JAVA_OPTS="-Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.port=18999  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"

        ps: 我需要监控的tomcat机子ip为 192.168.2.120;监控端口设置为:18999;远程认证设置(默认)为true;

          当时就因为很多资料上没有 将JAVA_OPTS变量 export,导致失败了多次。

        详细的参数见下面:    

     参数描述
    com.sun.management.jmxremote true / false. Default is true
    com.sun.management.jmxremote.port Port number. No default.
    com.sun.management.jmxremote.ssl true / false. Default is true.
    com.sun.management.jmxremote.ssl.enabled.protocols Default SSL/TLS protocol version.
    com.sun.management.jmxremote.ssl.enabled.cipher.suites Default SSL/TLS cipher suites.
    com.sun.management.jmxremote.ssl.need.client.auth true / false. Default is false
    com.sun.management.jmxremote.authenticate true / false.Default is true
    com.sun.management.jmxremote.password.file JRE_HOME/lib/management/jmxremote.password
    com.sun.management.jmxremote.access.file JRE_HOME/lib/management/jmxremote.access
    com.sun.management.jmxremote.login.config Default login configuration is a file-based password authentication
      3.重启tomcat,让配置生效。

      ps: 可以用 netstat -anp| grep 18999 ,查看守护线程是否已经启动!如图:

        

      4.VisualVM配置。
    •   打开你本机命令框,输入jvisualvm,点击这个EXE文件;或者进入JAVA_HOMEin目录下面点击也可以!

     

    •    右击远程,点击添加远程主机:

        

    •   右击 192.168.2.120(远程主机),添加一个JMX链接,如图:

        

    • 登录后状态:  

      

    ps:

    不需要账号密码登录的,设置:-Dcom.sun.management.jmxremote.authenticate=false 即可。

    export JAVA_OPTS="-Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.port=18999  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 如图:

     输入端口,直接点击确定,即可登录!

     

     ok!后面的可以参考 java自带的监控工具VisualVM一,来监控学习了!

        

    Jstatd方法:(略)还没有试过!

    参考文件:

    https://segmentfault.com/a/1190000004313468

    http://blog.csdn.net/lijiecong/article/details/6882267

    http://blog.csdn.net/wzyzzu/article/details/50380511

  • 相关阅读:
    协程方法的开启、关闭以及传参
    五种访问修饰符
    多态之虚方法、抽象类、接口
    递归算法
    继承之构造方法
    鼠标相关操作(Cursor类及相关API)
    遇到的问题(七)
    遇见的问题(六)
    遇见的问题(五)
    函数VS对象
  • 原文地址:https://www.cnblogs.com/happy-rabbit/p/6232860.html
Copyright © 2011-2022 走看看