jvisualvm的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jvisualvm的使用相关的知识,希望对你有一定的参考价值。

参考技术A 1.jvisualvm在安装完jdk的时候就已经存在了,放在jdk安装目录bin下面

2.jvisualvm的使用

/usr/local/java/bin/jvisualvm & 

3.监控本地和监控远程

1)监控本地:

标签介绍:

概述:显示的是该服务器的启动和系统参数,可以通过与服务器的实际参数进行对比查看是否有内存溢出

监控:显示的是当前系统的CPU、内存、类和线程的相关资源的使用情况。其中"堆dump"可以查看堆的详细状态,包括堆的概况,里面所有的类,还能点进具体的一个类查看这个类的状态。

线程:能够显示线程的名称和运行的状态,在调试多线程时必不可少,而且可以点进一个线程查看这个线程的详细运行情况

抽样器:(可针对cpu和内存进行抽样监控)

2).远程tomcat监控

1)修改修改 /tomcat path/bin/catalina.sh, 找到第一个没注释的JAVA_OPTS,在前面添加

2)将8099端口开放---->添加防火墙

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8099 -j ACCEPT

重启防火墙---->/etc/init.d/iptables restart 

3)jvisualvm添加远程tomcat监控

3)远程java应用程序(非tomcat):

方法1:(在启动的时候添加启动参数)

nohup java -Dcom.sun.management.jmxremote 

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

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

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

-Djava.net.preferIPv4Stack=true 

-Djava.rmi.server.hostname=192.168.9.174  -jar monitor_tuning-0.0.1-SNAPSHOT.jar &

注意端口号9005要开放,添加防火墙 !

方法2:使用jstatd

1)在$JAVA_HOME/bin目录下新建一个文件jstatd.all.policy(名称随意),内容如下:

grant codebase "file:/usr/local/java/lib/tools.jar"  

   permission java.security.AllPermission; 

;

2)然后执行

 jstatd  -J-Djava.security.policy=jstatd.all.policy  -J-Djava.rmi.server.hostname=192.168.9.174  -p 1099  &

在jvisualvm里面添加远程主机 192.168.9.174,然后右键添加jstatd连接,端口默认。jvisualvm即可扫描出所有正在运行的JVM,点击即可监控。

注意:此处需要添加防火墙(此处好多文章都没有说关于防火墙的问题)

两种方法比较:

1)jmx是jvm自身提供的一个标准的jmx管理功能,client支持度非常好,jvm监控工具基本上都会支持这种连接方式。而且只要配置几个简单的选项就可以使用了,不需要单独启动一个第三方的只用来监控连接的应用程序

2)jstatd是jdk提供的一个单独的工具,一个主机只需要运行一个jstatd就可以监控主机上所有的java application,而因为jmx是集成在jvm中,如果主机上有多个java应用程序需要监控,需要每个java应用程序配置相应的jmx选项,而且远程服务端口不能相同,client监控时也需要与每个java应用程序建立单独的连接

3)java应用程序启动时如果没有配置相应的jmx选项,则在运行周期内都无法远程监控应用程序,这可能会丧失定位问题的机会。而jstatd需要监控时,可以随时运行并进行监控

4) 在jvisualvm中,只有通过jstatd连接才能使用visualGC插件功能

5)jstatd server的端口是随机选择的,在有些情况下可能无法使用。比如我司的办公区域与生产区域之间网络设置了防火墙,只允许某个范围的端口通过,这是公司级的,某个团队无法修改防火墙策略。同时办公区域也不能直接ssh访问生产区域服务器,必须经过一个relay,也不能使用jstatd over ssh的方式。个人觉得jstatd不能在启动时显示指定服务的端口是它的一个槽点

4.插件安装:

参考文章:https://www.cnblogs.com/looyee/articles/11065093.html

以上是关于jvisualvm的使用的主要内容,如果未能解决你的问题,请参考以下文章

jvisualVM的使用

Jvisualvm简单使用教程

jvisualvm是啥

使用jvisualvm进行远程监控

Jvisualvm+Btrace使用

jvisualvm - 如何查看具有内存消耗的活动对象