由于章节的篇幅,本节介绍VisualVM 的插件安装和远程连接方法,调优方法在后续的章节中介绍。

VisualVM 介绍

VisualVM 是安装jdk时自带的jvm调优工具,它是一个可视化的工具,并可以安装其它的插件,使用起来更加的方便,可以替代jconsole,jvmstat等命令使用,它所在安装路径为jdk1.8.0_331\bin\jvisualvm.exe,双击它便可以打开visualVM。

VisualVM

GC插件安装

使用这个工具可以监控到gc的过程,VisualVM默认没有安装gc插件,需要手动安装,点击菜单栏 工具->插件 这里选择3个插件

Visual GC、VisualVm-JConsole、Tracer-Jvmstat Probes。

VisualVM 插件安装

点击安装按钮,即可开始安装VisualVM插件,但是,,由于网络的问题可能下载不了。

VisualVM 插件安装失败

这时,有两种解决方式

1)配置代理下载

这里不推荐这种安装方式,不再敖述。

2)直接下载插件安装文件

插件中心地址:https://visualvm.github.io/pluginscenters.html,根据自己的jdk版本选择相应的下载地址 https://visualvm.github.io/uc/8u131/updates.html 。

VisualVM 插件安装地址

ctrl+f搜索 gc ,并下载这个文件 com-sun-tools-visualvm-modules-visualgc。

VisualVM 插件下载

打开菜单栏 工具->插件 切换到已下载选项卡,点击添加插件按钮,选中刚才下载的插件文件,如图

VisualVM 插件安装

最后点击安装,安装成功如图所示

VisualVM JVM调优

用相同的方式安装VisualVm-JConsole、Tracer-Jvmstat Probes。

添加远程连接

在VisualVM 中有两种添加远程连接的方式

VisualVM JVM调优工具

  1. jstatd: 需要在服务器端启动jstatd服务,它是对整个服务器所有Java程序的监控,可以看到Visual GC的变化,但是不能使用抽样器和cpu监视,会提示不受此JVM支持。
  2. JMX:   对单个java程序的监控,除了Visual GC(会提示不受此JVM支持),其它的参数选项卡都可以看到和使用。
所以,需要将这两种连接方式一起使用才可以使用全部功能,这显得有点繁琐,需要要耐心看完,以下介绍这两种添加远程连接的方式。

添加jstatd连接

1) 首先在服务器端启动jstatd服务。

要使用jstatd,在这之前请安装jdk-devel ,安装成功后可以便可以启动jstatd服务。

启动jstatd服务命令

jstatd \
-J-Djava.security.policy=/home/jstatd.all.policy \
-J-Djava.rmi.server.hostname=192.168.1.200 -p 1099

参数-p 1099 是jstatd开放的默认端口,不指定也是1099。

参数java.security.policy 值 jstatd.all.policy可以是绝对路径如/home/jstatd.all.policy

文件jstatd.all.policy内容如下

grant codebase "file:${java.home}/../lib/tools.jar" { 
	permission java.security.AllPermission; 
};

以上启动jstatd服务的操作步骤。

2)在VisualVM 添加远程主机

右键左侧菜单的添加远程主机

VisualVM 添加远程主机

在主机名输入框中输入你需要远程连接的地址如192.168.1.200,显示名称输入别名如测试服务器。

输入完成后点击确定按钮,添加成功,会显示这台服务器的所有java应用程序,如图。

VisualVM jstatd添加

随便点击一个java应用,你也将看到Visual GC的运行效果。

VisualVM 添加远程连接

虽然可以看到Visual GC但是有些功能不能使用,如

VisualVM 抽样器不能使用

上面的cpu和内存的点击按钮都是灰色的,显示"抽样处于非活动状态",接下来介绍用jmx方式添加的远程主机配合使用。

添加JMX连接

JMX连接是对单个java应用的监视,右键刚才添加的测试服务器,点击添加JMX连接

VisualVM 远程连接主机

在添加JMX连接前,需要修改jar文件的启动参数,重新启动java你想监视的java应用。

 java \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=10240 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar xxx.jar

参数-Dcom.sun.management.jmxremote.authenticate=false代表不使用校验。

最后再输入刚才配置的地址192.168.1.200和端口号10240,即可完成远程服务器的连接。

VisualVM 远程连接

最后添加远程服务成功的效果如图所示:

VisualVM jmx连接

以上便是VisualVM添加远程连接的方法,有点繁琐,照着一步步操作最后便可以看到最终的效果。