Java性能监控和故障诊断可视化工具之二:jvisualvm

来自:麻辣软硬件(微信号:VOSDeveloper),作者:cdk

前面的文章中我们介绍了jconsole,本篇文章我们来介绍下jvisualvm。jvisualvm(All-in-One Java Troubleshooting Tool)是jdk1.6开始引入的JVM监控工具,其基本上包含了jconsole的功能且比jconsole更加强大,主要功能如下图:

1、jvisualvm启动


系统运行中输入jvisualvm (需要先配置环境变量,一般开发人员搭建Java开发环境时都会配置)命令,点击“确定”打开jvisualvm页面,如下图所示:



首次打开jvisualvm时最好先安装jvisualvm插件,jvisualvm插件提供了许多扩展功能,不安装插件只能使用jvisualvm的基本的监控、线程面板等功能。

2、jvisualvm插件的安装


点击菜单栏中“工具”—>“插件”后弹出插件管理框,如下图所示


在弹出框中点击“检查更新”,报如下图所示错误(小编使用的JDK版本是1.8.0_25,非此版本的JDK可能会展示不同的错误)



错误的原因是:默认的连接已经关闭,新地址已经迁移到github,网址https://visualvm.github.io/pluginscenters.html里面有不同版本jdk对应的插件中心地址,如下图所示:


选择对应JDK版本的插件中心地址,点击“设置”如下图所示:


点击右侧的“编辑”按钮,进行编辑:


修改为本机JDK版本对应的插件中心地址,点击按钮“确定”保存后会自动检测更新,如下图所示是检查后发现存在可用的插件:


选择需要的插件进行更新,如下图所示:


安装插件完成后,可以在“已安装”页签中查看已安装的插件,如下图所示:

3、jvisualvm的使用


jvisualvm可以监控本地Java进程,也可以监控远程Java进程。但一般测试环境或者生产环境的Java服务都是部署远端服务器上,所以我们重点讲如何通过jvisualvm监控远程Java进程。而jvisualvm要实现监控远程Java进程,需要远程服务器在启动Java进程时支持JMX连接




要配置远程Java进程支持JMX连接,需要在启动Java进程时加入以下属性:

-Dcom.sun.management.jmxremote.port=7091
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false


上述配置的意义是开启JMX连接端口7091,同时配置不需要ssl安全认证方式连接(一般我们的监控的服务器都是在本地局域网中,所以没有必要配置ssl安全认证方式连接,若要配置ssl安全认证方式连接,还需要配置连接的用户名及密码等)


假如远程Java进程已经配置了支持JMX连接,我们点击菜单“文件”—》添加JMX连接,在弹出框中输入远程进程的IP和端口,如:172.30.14.242:7091(小编使用的服务器IP是172.30.14.242,配置的支持JMX的端口是7091),如下图所示:


输入完成后点击“确定”按钮,则新增了远程进程,如下图所示:


双击应用程序框中,已新增的远程节点下的远程进程,右侧窗口展示了远程概述信息,如下图所示:


在右侧窗口中包含页签概述、监视、线程、抽样器等,如果安装了其他插件,此处页面还会有所增加,如下图所示:


jvisualvm基本的概述、监视、线程功能与jconsole中的功能差别不大,此处不再赘述。

4、生成及查看堆转储快照


Dump文件生成的方式有两种:


a、在应用程序窗口中右键点击应用程序节点,在弹出框中选择“堆Dump”;


b、在右侧已打开的应用程序“监视”标签页中单击“堆Dump”


点击按钮“确定”生产Dump文件:


将远程服务器上的Dump文件下载到本地,点击菜单“文件”—》“载入”后选择下载的Dump文件载入,如下图所示:


可以查看应用程序Dump时的运行时参数,线程堆栈、类的实例数量、容量信息以及实例的具体属性信息。

5、程序性能分析


在抽样器页面中提供了程序运行期间方法级的
COU执行时间分析及内存分析,由于抽样分析过程对程序运行性能有较大的影响,一般我们只在测试环境中使用此功能。


如下图所示,点击“CPU”抽样分析:


CPU分析是统计抽样期内每个方法的执行次数、执行耗时等,以分析出哪个方法CPU耗时较长,哪个方法频繁执行,为程序性能优化提供数据。

点击“内存”抽样分析:


内存分析是统计抽样期内每个方法关联的对象及所占的空间,以分析出哪个方法关联对象多,哪个方法占用空间较大,为程序性能优化提供数据。

小结


以上介绍了可视化工具
jvisualvm插件的安装及jvisualvm基本使用,希望对大家有所帮助。

推荐↓↓↓
Java编程
上一篇:Java性能监控和故障诊断可视化工具之三:jmc 下一篇:Java性能监控和故障诊断可视化工具之一:jconsole