zoukankan      html  css  js  c++  java
  • 利用VisualVM监视远程JVM

    VisualVM介绍

    VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。
    在JDK Update7之后,VisualVM作为JDK的一部分发布,但同时VisualVM也发布独立的版本。VisualVM必须运行在JDK1.6以上的VM环境下,但可以用它来监控JDK1.4以上的JVM
    下载地址:http://visualvm.java.net/download.html

    配置jetty------匿名

    修改启动脚本:

    vi /srv/jetty6/mtct
    

    在RUN_CMD后面追加:

    #指定hostname 一般情况需要重新指定hostname,否则连接不成功
    -Djava.rmi.server.hostname=192.168.0.147
    #指定hostname 指定端口默认:1099
    -Dcom.sun.management.jmxremote.port=8899
    #禁止ssl连接
    -Dcom.sun.management.jmxremote.ssl=false
    
    #禁止用户认证
    -Dcom.sun.management.jmxremote.authenticate=false
    
    

    另一种配置------认证配置

    #指定hostname 一般情况需要重新指定hostname,否则连接不成功
    -Djava.rmi.server.hostname=192.168.0.147
    #指定hostname 指定端口默认:1099
    -Dcom.sun.management.jmxremote.port=8899
    #禁止ssl连接
    com.sun.management.jmxremote.ssl=false
    
    #开启用户认证
    com.sun.management.jmxremote.authenticate=true
    
    #认证用户名密码
    -Dcom.sun.management.jmxremote.password.file=/opt/home/lichengwu/jvm/management/jmxremote.password
    #访问模式
    -Dcom.sun.management.jmxremote.access.file=/opt/home/lichengwu/jvm/management/jmxremote.access
    

    注意:jmxremote.password和jmxremote.access文件只允许启动用户名对该文件拥有读写权限 ,我们服务用root启动 所以:

    [root@dog:management]# chmod 600 *
    [root@dog:management]# chown root:root *
    [root@dog:management]# ll
    total 8
    -rw------- 1 root root 29 Nov 14 16:38 jmxremote.access
    -rw------- 1 root root 26 Nov 14 16:38 jmxremote.password
    [root@dog:management]#
    
    

    如果权限设置不正确会报错:Error: Password file read access must be restricted

    jmxremote.password模板:

    [用户名]       [密码]
    mtct          ct.meituan
    test          test
    

    jmxremote.access模板:

    [用户名]      [权限]
    mtct        readwrite
    test        readonly
    

    第三种配置------SSL

    参考:http://download.oracle.com/javase/1.5.0/docs/guide/management/agent.html#SSL_enabled

    1. 在服务器上使用keytool创建密钥对
      keytool是java平台自带的一个密钥和证书管理工具,使用keytool创建密钥对:
      keytool -genkey -alias jetty -keystore /opt/home/lichengwu/jvm/ssl/jettyKeyStore
      

      按照提示输入相关信息(包括设定密码、姓、组织名等),这些信息是可以随便输入的,但从产品角度讲应该统一设定。输入的密码在今后操作中均需要使用。

    2. 导出公钥
      keytool -export -alias jetty -keystore /opt/home/lichengwu/jvm/ssl/jettyKeyStore -file /opt/home/lichengwu/jvm/ssl/jetty.cert
      
    3. 将公钥导入至需要运行VisualVM的机器。(我的是windows 放在 Z:jvmssljetty.cert)
      keytool -import
       -alias jetty -keystore Z:jvmssljettyKeyStore -file Z:jvmssljetty.cert
      
    4. 修改jetty的启动脚本
      将-Dcom.sun.management.jmxremote.ssl="false
      "
      修改为:
      -Dcom.sun.management.jmxremote.ssl="true
      "
      ,并添加:
      -Djavax.net.ssl.keyStore=/opt/home/lichengwu/jvm/ssl/jettyKeyStore
      -Djavax.net.ssl.keyStorePassword=123456
      
    5. 使用如下参数启动VisualVM:
      VisualVM -J-Djavax.net.ssl.trustStore=Z:jvmssljettyKeyStore
      

      监控

    启动VisualVM,添加远程主机:



     输入远程主机地址:192.168.0.147



     修改端口,如果是默认端口,可可跳过



     添加JMX连接


    完成后双击:


  • 相关阅读:
    tree related problems (update continuously)
    [单元測试]_[VC2010使用gtest单元測试入门]
    generate alphanumeric serial number
    UiAutomator源代码分析之获取控件信息
    Fckeditor常见漏洞的挖掘与利用整理汇总
    AsyncAwait
    .Net异步编程知多少
    ParameterizedThreadStart task
    AsyncAwait 学习
    8天玩转并行开发——第八天 用VS性能向导解剖你的程序
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/7955715.html
Copyright © 2011-2022 走看看