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的使用的主要内容,如果未能解决你的问题,请参考以下文章