一、Java VisualVM
Java VisualVM是提供可视界面的工具,用于在Java应用程序在Java虚拟机(JVM)上运行时查看有关Java应用程序的详细信息,以及对这些应用程序进行故障排除和性能分析。Sun的Java Development Kit(JDK)发行版提供了各种可选工具,包括Java VisualVM,用于检索有关运行JVM软件实例的不同类型的数据。例如,大多数以前独立的工具JConsole,jstat, jinfo,jstack和jmap是Java VisualVM的一部分。Java VisualVM联合了这些工具以从JVM软件获取数据,然后以图形方式重新组织和显示信息,以使您能够统一查看有关多个Java应用程序的不同数据,无论它们是在本地运行还是在远程计算机上运行。此外,开发人员可以通过创建插件并将插件发布到该工具的内置更新中心中来扩展Java VisualVM以添加新功能
Java应用程序开发人员可以使用Java VisualVM对应用程序进行故障排除以及监视和改善应用程序的性能。Java VisualVM可以使开发人员生成和分析堆转储,跟踪内存泄漏,浏览平台的MBean并在这些MBean上执行操作,执行和监视垃圾回收以及执行轻量级的内存和CPU性能分析
https://docs.oracle.com/javase/7/docs/technotes/guides/visualvm/
可以这么理解,Java应用程序在Java虚拟机运行情况的一个可视界面的工具。
二、环境
1、操作系统 CentOS 7.7 64位
[root@aliyunlinux temp]# cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)
2、JDK1.8.0_201
[root@aliyunlinux temp]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
3、tomcat
apache-tomcat-7.0.93
4、catalina-jmx-remote.jar(版本7.0.0)
下载地址 https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina-jmx-remote
三、步骤
1、catalina.sh新增配置
catalina.sh在目录/root/apache-tomcat-7.0.93/bin
JAVA_OPTS="$JAVA_OPTS-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.password.file=/root/apache-tomcat-7.0.93/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=/root/apache-tomcat-7.0.93/conf/jmxremote.access
-Djava.rmi.server.hostname=112.74.216.57"
说明:
-Dcom.sun.management.jmxremote=true 设置允许远程链接
-Dcom.sun.management.jmxremote.ssl=false 设置非ssl
-Dcom.sun.management.jmxremote.password.file=/root/apache-tomcat-7.0.93/conf/jmxremote.password 远程用户设置
-Dcom.sun.management.jmxremote.access.file=/root/apache-tomcat-7.0.93/conf/jmxremote.access 远程用户密码设置
-Djava.rmi.server.hostname=112.74.216.57" 运行主机设置(外网ip)
2、server.xml新增配置
server.xml在目录/root/apache-tomcat-7.0.93/conf
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
3、新增jmxremote.access和jmxremote.password文件
在/root/apache-tomcat-7.0.93/conf目录下执行复制文件命令
cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password
cp $JAVA_HOME/jre/lib/management/jmxremote.access jmxremote.access
修改权限
chmod -R 600 jmxremote.access
chmod -R 600 jmxremote.password
创建用户
在jmxremote.access新增用户以及用户的读写权限
这里设置了两个用户
格式 : zhuzq readonly / 用户名 权限
在jmxremote.password设置用户密码
格式 : zhuzq 123456/ 用户名 密码
4、下载catalina-jmx-remote.jar
https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina-jmx-remote
鼠标右击复制链接
linux执行命令下载
wget https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-catalina-jmx-remote/7.0.0/tomcat-catalina-jmx-remote-7.0.0.jar
结果
5、确认服务器端口已经打开
6、使用jvisualvm.exe监控远程服务器JVM
C:\Program Files\Java\jdk1.8.0_45\bin
选择远程--添加远程主机
选择添加JMX链接