使用jconsole分析java虚拟机

时间:2022-12-29 10:47:53

1、jconsole监控本地windows java进程

  监控本地java比较简单,只需要双击运行 JAVA_HOME/bin/jconsole 即可,或者也可以在目录窗口中输入jconsole 即可弹窗如下窗口

   使用jconsole分析java虚拟机

 在本地进行选项中双击想要监控的进程即可

 可能出现的问题

  在选中对应的进程的时候,显示“未对此进程启用管理代理”的错误(在命令窗口中使用jps的时候会出现“process information unavailable”),可能是因为更改过登录账号大小写发生过更改导致

  解决办法:

    1、退出所有的java程序

    2、删除C:\Users\Administrator\AppData\Local\Temp目录中的hsperfdata_[user_name] 文件夹

    3、重新启动java程序

2、jconsole监控远程linux java进程(tomcat)

  1、修改jmxremote.password文件

    切换到JAVA_HOME中的jre/lib/management目录执行

    mv jmxremote.password.template jmxremote.password

    vim jmxremote.password

    将注释的monitorRole 和controlRole 放开,并修改口令

 

  2、在tomcat的catalina.sh 中添加如下内容,如果不是tomcat,是其他java应用程序,则在其启动脚本中添加java启动参数即可

JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.3.235 -Dcom.sun.management.jmxremote"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141.x86_64/jre/lib/management/jmxremote.password"

 

    其中192.168.3.4为tomcat所在的IP地址,prot为开放给jconsole的端口,/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141.x86_64/为JAVA_HOME

  3、修改/etc/hosts文件

    修改

      127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  

    为

      192.168.3.235   localhost localhost.localdomain localhost4 localhost4.localdomain4

  4、打开jconsole

     打开jconsole,输入地址、用户名、口令

      使用jconsole分析java虚拟机

    点击连接,弹窗警告窗口,选择不安全,弹窗如下窗口表示远程连接成功

      使用jconsole分析java虚拟机

 

  追加:

      使用jdk自带的jvisualvm.exe进行分析

      1、本地安装监控

        jvisualvm本地分析比较简单,双击运行程序即可看到本机上的java进程

        如果需要安装如Visual GC之类的插件的话可在工具>插件中进行安装,需要注意的是可能自带的默认下载url无法下载,需要在设置中更改下载url

        如jdk1.7的可使用https://visualvm.github.io/archive/uc/7u60/updates.xml.gz,配置成或重新检查则会出现可安装的插件列表

      2、远程监控

        远程监控监控可分为jstatd和JMX方式

        JMX方式和使用jconsole监控远程linux java进程配置方式一样

        jstatd方式则需要在需要监控的服务器启动jstatd,方式为:

         在JAVA_HOME/bin中新建jstatd.all.policy文件内容为

          grant codebase "file:${java.home}/../lib/tools.jar" {
            permission java.security.AllPermission;
          };

         然后执行启动命令:

          jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.3.232

          -- 192.168.3.232为服务器IP地址

        由于远程监控方式获取的权限有限,需要使用jstatd和JMX两种方式一起使用

        也可以直接在服务器中通过jmap命令:如

         jmap -dump:format=b,file=testdump.bin 进程号

        的方式直接在服务器中生成dump文件,然后下载到本地通过jvisualvm 中的文件>装载 进行分析