Java VisualVM远程监控JVM

简介:

   VisualVM是一个以监控、显示本地或者远程服务器JVM工作情况,进行性能调优的工具。借助VisualVM,我们可以实现对JVM内存各个子池、CPU、垃圾收集器等方面进行监控,从而发现程序代码中潜在的泄露点和配置问题。


远程监控Linux JVM有两种连接方式:

CentOS6.5安装:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

Ubuntu12.04安装:sudo apt-get install java-7-openjdk


方式1:通过Jstatd启动RMI服务

1.开启远程监控访问,将下面注释去掉,Ubuntu和CentOS JAVA安装路径不同,其他配置基本一样。

 Ubuntu:

1
2
3
# vi /etc/java-7-openjdk/management/jmxremote.password 
monitorRole  QED      
controlRole   R&D

 CentOS:

1
2
3
4
5
6
# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-1.b13.el6_6.x86_64/jre/lib/management/
# cp jmxremote.password.template jmxremote.password
# chmod 644 jmxremote.password
# vi jmxremote.password
monitorRole  QED      
controlRole   R&D

2.jstatd以守护进程启动

1
2
3
4
5
6
7
8
9
# jstatd -J-Djava.rmi.server.hostname=192.168.1.156 &
# Could not create remote object
access denied ( "java.util.PropertyPermission"  "java.rmi.server.ignoreSubClasses"  "write" )
java.security.AccessControlException: access denied ( "java.util.PropertyPermission"  "java.rmi.server.ignoreSubClasses"  "write" )
         at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
         at java.security.AccessController.checkPermission(AccessController.java:559)
         at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
         at java.lang.System.setProperty(System.java:783)
         at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)

出现错误,说没有权限,于是百度一下,找到解决办法,就可以正常启动了,如下:

1
2
3
4
5
6
# cd /tmp
# vi 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.1.156 &

打开JVisualVM工具(默认端口1099)-->添加远程主机-->双机主机IP,即可监控

CPU图形没有显示,不受此JVM支持,目前还没找到原因,有知道的博友,还请告知下,谢谢!

wKiom1TERXnT2A5RAAZz4IfE-2E179.jpg

方式2:JMX方式监控应用程序,我们以Tomcat为例(常用)

1
2
3
4
5
6
7
8
9
10
# cd /root/apache-tomcat-8.0.17/bin
# vi catalina.sh   #找到JAVA_OPTS,在下面添加,添加的位置并没要要求
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
JAVA_OPTS="$JAVA_OPTS-Dcom.sun.management.jmxremote 
         -Dcom.sun.management.jmxremote.port=9999 
         -Dcom.sun.management.jmxremote.authenticate= false 
         -Dcom.sun.management.jmxremote.ssl= false 
         -Djava.rmi.server. hostname =192.168.1.156"
# ./startup.sh 
# netstat -antp |grep 9999    #查看端口是否监听

打开JVisualVM工具-->添加远程主机-->在远程主机添加JMX连接-->补全端口,确认即可

wKiom1TESjugXERQAAdJO8Fa6Gs528.jpg

目录
相关文章
|
2月前
|
监控 Java 开发者
Java一分钟之-Java性能分析与调优:JProfiler, VisualVM等工具
【5月更文挑战第21天】本文介绍了Java性能优化的两个利器——JProfiler和VisualVM。JProfiler通过CPU Profiler、内存分析器和线程视图帮助解决过度CPU使用、内存泄漏和线程阻塞问题;VisualVM则聚焦于GC行为调整和类加载优化,以减少内存压力和提高应用性能。使用这些工具进行定期性能检查,是提升Java应用效率的关键。
49 0
|
2月前
|
监控 Ubuntu Java
Java VisualVM远程监控JVM
Java VisualVM远程监控JVM
Java VisualVM远程监控JVM
|
2月前
|
监控 算法 Java
垃圾回收机制与性能调优:描述Java虚拟机(JVM)的垃圾回收算法,并解释为什么需要这些算法。如何使用Java内存分析工具(如VisualVM、JConsole或MAT)来识别和解决内存泄漏问题?
垃圾回收机制与性能调优:描述Java虚拟机(JVM)的垃圾回收算法,并解释为什么需要这些算法。如何使用Java内存分析工具(如VisualVM、JConsole或MAT)来识别和解决内存泄漏问题?
46 1
|
Java Android开发
Mac下 Visual VM 无法检测到本地的Java进程
Mac下 Visual VM 无法检测到本地的Java进程
111 0
|
监控 Java 数据可视化
Java程序性能分析工具 VisualVM
引用:http://www.oschina.net/p/visualvm VisualVM是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分析线程信息,浏览内存堆数据。
1227 0
|
算法 Java
【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )
【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )
279 0
【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )
|
开发框架 监控 Java
【Java 虚拟机原理】堆区 | Java VisualVM 工具
【Java 虚拟机原理】堆区 | Java VisualVM 工具
138 0
【Java 虚拟机原理】堆区 | Java VisualVM 工具
|
Java Android开发
使用VisualVM进行Java应用的性能测量
使用VisualVM进行Java应用的性能测量
111 0
使用VisualVM进行Java应用的性能测量
|
搜索推荐 Java 测试技术
使用JDK自带的VisualVM进行Java程序的性能分析
使用JDK自带的VisualVM进行Java程序的性能分析
116 0
使用JDK自带的VisualVM进行Java程序的性能分析
Java VisualVM添加Visual GC插件实现JVM性能调优
访问地址:https://visualvm.github.io/pluginscenters.html,找到自己JDK版本对应的插件下载地址(我的JDK版本为1.7.0_67):
239 0
Java VisualVM添加Visual GC插件实现JVM性能调优