由于章节的篇幅,本节介绍VisualVM 的插件安装和远程连接方法,调优方法在后续的章节中介绍。
VisualVM 介绍
VisualVM 是安装jdk时自带的jvm调优工具,它是一个可视化的工具,并可以安装其它的插件,使用起来更加的方便,可以替代jconsole,jvmstat等命令使用,它所在安装路径为jdk1.8.0_331\bin\jvisualvm.exe,双击它便可以打开visualVM。
GC插件安装
使用这个工具可以监控到gc的过程,VisualVM默认没有安装gc插件,需要手动安装,点击菜单栏 工具->插件 这里选择3个插件
Visual GC、VisualVm-JConsole、Tracer-Jvmstat Probes。
点击安装按钮,即可开始安装VisualVM插件,但是,,由于网络的问题可能下载不了。
这时,有两种解决方式
1)配置代理下载
这里不推荐这种安装方式,不再敖述。
2)直接下载插件安装文件
插件中心地址:https://visualvm.github.io/pluginscenters.html,根据自己的jdk版本选择相应的下载地址 https://visualvm.github.io/uc/8u131/updates.html 。
ctrl+f搜索 gc ,并下载这个文件 com-sun-tools-visualvm-modules-visualgc。
打开菜单栏 工具->插件 切换到已下载选项卡,点击添加插件按钮,选中刚才下载的插件文件,如图
最后点击安装,安装成功如图所示
用相同的方式安装VisualVm-JConsole、Tracer-Jvmstat Probes。
添加远程连接
在VisualVM 中有两种添加远程连接的方式
- jstatd: 需要在服务器端启动jstatd服务,它是对整个服务器所有Java程序的监控,可以看到Visual GC的变化,但是不能使用抽样器和cpu监视,会提示不受此JVM支持。
- 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 添加远程主机
右键左侧菜单的添加远程主机
在主机名输入框中输入你需要远程连接的地址如192.168.1.200,显示名称输入别名如测试服务器。
输入完成后点击确定按钮,添加成功,会显示这台服务器的所有java应用程序,如图。
随便点击一个java应用,你也将看到Visual GC的运行效果。
虽然可以看到Visual GC但是有些功能不能使用,如
上面的cpu和内存的点击按钮都是灰色的,显示"抽样处于非活动状态",接下来介绍用jmx方式添加的远程主机配合使用。
添加JMX连接
JMX连接是对单个java应用的监视,右键刚才添加的测试服务器,点击添加JMX连接
在添加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添加远程连接的方法,有点繁琐,照着一步步操作最后便可以看到最终的效果。