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



本文转自 李振良OK 51CTO博客,原文链接:http://blog.51cto.com/lizhenliang/1608005,如需转载请自行联系原作者

相关文章
|
2月前
|
监控 算法 Java
Java虚拟机(JVM)的垃圾回收机制深度解析####
本文深入探讨了Java虚拟机(JVM)的垃圾回收机制,旨在揭示其背后的工作原理与优化策略。我们将从垃圾回收的基本概念入手,逐步剖析标记-清除、复制算法、标记-整理等主流垃圾回收算法的原理与实现细节。通过对比不同算法的优缺点及适用场景,为开发者提供优化Java应用性能与内存管理的实践指南。 ####
|
1月前
|
监控 算法 Java
Java虚拟机(JVM)垃圾回收机制深度剖析与优化策略####
本文作为一篇技术性文章,深入探讨了Java虚拟机(JVM)中垃圾回收的工作原理,详细分析了标记-清除、复制算法、标记-压缩及分代收集等主流垃圾回收算法的特点和适用场景。通过实际案例,展示了不同GC(Garbage Collector)算法在应用中的表现差异,并针对大型应用提出了一系列优化策略,包括选择合适的GC算法、调整堆内存大小、并行与并发GC调优等,旨在帮助开发者更好地理解和优化Java应用的性能。 ####
37 0
|
2月前
|
Prometheus 监控 Cloud Native
JAVA线程池监控以及动态调整线程池
【10月更文挑战第22天】在 Java 中,线程池的监控和动态调整是非常重要的,它可以帮助我们更好地管理系统资源,提高应用的性能和稳定性。
190 64
|
28天前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
2月前
|
监控 安全 Java
在 Java 中使用线程池监控以及动态调整线程池时需要注意什么?
【10月更文挑战第22天】在进行线程池的监控和动态调整时,要综合考虑多方面的因素,谨慎操作,以确保线程池能够高效、稳定地运行,满足业务的需求。
119 38
|
30天前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
2月前
|
Arthas Prometheus 监控
监控堆外使用JVM工具
监控堆外使用JVM工具
43 7
|
2月前
|
机器学习/深度学习 监控 算法
Java虚拟机(JVM)的垃圾回收机制深度剖析####
本文深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法、性能调优策略及未来趋势。通过实例解析,为开发者提供优化Java应用性能的思路与方法。 ####
53 1
|
2月前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
89 1
|
2月前
|
监控 Java 开发者
Java虚拟机(JVM)深度优化指南####
本文深入探讨了Java虚拟机(JVM)的工作原理及其性能优化策略,旨在帮助开发者通过理解JVM的内部机制来提升Java应用的运行效率。不同于传统的技术教程,本文采用案例分析与实战技巧相结合的方式,为读者揭示JVM调优的艺术。 ####
58 8