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插件

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐