VisualVM是什么?
VisualVM是一种集成了多个JDK命令行工具的可视化工具,它提供在Java虚拟机(JVM)上运行的Java应用程序的详细信息。VisualVM的图形用户界面使得用户可以方便、快捷地查看多个Java应用程序的相关信息,包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,同时支持在MBeans上进行浏览和操作。此外,VisualVM还支持通过命令行启动和操作,提供了多种命令选项,如通过进程ID、JMX URL、文件、分析器ID、MBean名称、插件仓库URL等打开或操作Java进程和分析结果。VisualVM是官方的简单可视化的JVM监控工具,旨在为开发者提供强大的分析能力,帮助监控和管理Java应用程序的性能和健康状况
一、在window上开启visualvm
在windows系统下java安装目录下可以找到:C:\Program Files\Java\jdk1.8.0_112\bin
若jdk是高版本>1.8,需要从网上下载VisualVM,
visualvm下载地址:VisualVM: Home
本人使用的2.1.9版本
打开visualvm工具,右击远程,添加远程主机
这时,右击“192.168.1.241”,会看到,有两种远程连接方式,一个是JMX,一个是jstatd,我们选择jstatd
二、确定linux系统正确安装了ssh,在linux远程服务器上执行命令:
#必须使用root账号登录才可以
sudo ps -e | grep ssh
正确安装的话,会如下所示
三、在远程服务器上配置安全访问文件
1、新建 jstatd.all.policy(名称可以自拟,统一命名增加文件可读性)文件,置于JAVA_HOME/bin/文件夹下,
vim jstatd.all.policy
注:当远程linux服务器上有多个jdk时,需要确定哪一个才是压测系统Java进程使用到的jdk环境,这时可以使用“ps -ef | grep java”来确定JAVA_HOME,如下,pid = 17268的进程为Java进程,/Data/software/jdk1.8.0_65/为正确的JAVA_HOME;
或者可以使用 whereis java 命令查看java的安装目录
2、 jstatd.all.policy文件的内容如下
grant codebase "file:${java.home}/../lib/tools.jar" {permission java.security.AllPermission;};
esc退出编辑后,:wq强制保存并退出编辑文件
3、保存,设置权限
[root@VM-16-4-centos bin]# chmod 777 jstatd.all.policy
设置成功入下图:
4、在监控的远程服务端启动jstatd,命名如下:
jstatd -J-Djava.security.policy=jstatd.all.policy &
启动后可以使用以下命令检查是否启动完成;
ps -aux | grep jstatd 查看jstatd进程服务
netstat -antup|grep jstatd 查看启动的端口
正确执行后,会回显一个后台进程pid,如下:
这时,观察visualvm工具右边栏菜单,可以看到远程连接的服务端已经自动连接上jstatd,这就意味着,可以在本地通过远程jstatd来监控远程服务器上的jvm信息了。
点击其中一个进程com.sunsoft.zyebiz.rabbitmq.servicerun.EbRabbitmqServicer,
就可以进入到对应的监控台
四、实时监控GC的插件visualgc
下载VisualVMGC插件(必须找对应的版本)
下载地址: VisualVM: Home
下载后的插件
插件装载方式,右击VisualVM上的工具栏,选择插件
安装成功后,重启一下visualvm,就可以看到菜单栏上多出一个Visual GC插件