VisualVM工具的使用

VisualVM工具的使用

VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。
VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。
在这里插入图片描述

启动

在jdk的安装目录的bin目录下,找到jvisualvm.exe,双击打开即可。

在这里插入图片描述
在这里插入图片描述

查看本地进程

在这里插入图片描述

查看CPU、内存、类、线程运行信息

在这里插入图片描述

查看线程详情

在这里插入图片描述在这里插入图片描述

抽样器

在这里插入图片描述

监控远程的jvm

VisualJVM不仅是可以监控本地jvm进程,还可以监控远程的jvm进程,需要借助于JMX技术实现。
tip:什么是JMX?
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。
JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

a、指令监控远程tomcat

想要监控远程的tomcat,就需要在远程的tomcat进行对JMX配置,方法如下:

#在tomcat的bin目录下,修改catalina.sh,添加如下的参数
JAVA_OPTS="
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false"

参数意思是:
在这里插入图片描述
还有一种简单的配置方法
直接带入Jar包运行的参数信息,来运行jar

java -Dcom.sun.management.jmxremote   -Dcom.sun.management.jmxremote.port=9999   -Dcom.sun.management.jmxremote.local.only=false   -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false   -Djava.rmi.server.hostname=127.0.0.1   -jar SpringBoot.jar

注意: JMX Server还会随机额外的去监听两个端口,所以在远程连接时我们本地的JMX在连接时也会尝试去连接监听端口。

//查看远端JMX随机监听的端口
jps -l

在这里插入图片描述

//表示使用正则查询并打印该进程打开的所有端口信息
lsof -i|grep 145546

在这里插入图片描述
很显然,多出两个端口。那么再开放这两个端口就可以成功连接了

b、 使用VisualJVM连接远程主机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用SSL认证方式远程查看JVM

背景:上面介绍的方法是所有人都可以监控我的JVM情况,不安全。
目的:弄一个认证方式,让允许登录的主机才能远程访问

生产环境推荐制作密钥的方法
在服务器文件夹新建好对应的密钥,在拷贝到客户端中,这样操作会简单一点

1、client keystore

keytool -genkeypair -alias visualvm -keyalg RSA -validity 365 -storetype pkcs12 -keystore visualvm.keystore -storepass 123456 -keypass 123456 -dname "CN=thelongi OU=Alphalion O=dev L=GZ S=GD C=CN"

2、client cer

keytool -exportcert -alias visualvm -storetype pkcs12 -keystore visualvm.keystore -file visualvm.cer -storepass 123456

3、client truststore

keytool -importcert -alias visualvm -file visualvm.cer -keystore visualvm-test-app.truststore -storepass 123456 -noprompt

4、server keystore(跟第一步格式是一样的)

keytool -genkeypair -alias visualvm-test-app -keyalg RSA -validity 365 -storetype pkcs12 -keystore visualvm-test-app.keystore -storepass 123456 -keypass 123456 -dname "CN=thelongi OU=Alphalion O=dev L=GZ S=GD C=CN"

5、server cer (跟第二步格式一样)

keytool -exportcert -alias visualvm-test-app -storetype pkcs12 -keystore visualvm-test-app.keystore -file visualvm-test-app.cer -storepass 123456

6、server truststore(跟第三步格式一样)

keytool -importcert -alias visualvm-test-app -file visualvm-test-app.cer -keystore visualvm.truststore -storepass 123456 -noprompt

Tip: 秘钥文件制作是依赖上一步操作的,制作制作时要按照顺序执行
指令会生成6个文件visualvm.truststore打头的秘钥就是客户端秘钥,用来认证访问服务端的。
visualvm-test-app就是服务端秘钥。用来加密认证的

运行jar包添加参数

java -jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000  -Dcom.sun.management.jmxremote.rmi.port=9000  -Djava.rmi.server.hostname=81.68.167.181 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=true -Dcom.sun.management.jmxremote.registry.ssl=true -Dcom.sun.management.jmxremote.ssl.need.client.auth=true -Djavax.net.ssl.keyStore=/home/lighthouse/keystore/visualvm-test-app.keystore -Djavax.net.ssl.keyStorePassword=123456 -Djavax.net.ssl.trustStore=/home/lighthouse/keystore/visualvm-test-app.truststore -Djavax.net.ssl.trustStorePassword=123456 SpringBoot.jar

将密钥拷贝到客户端 keystore(自定义文件夹)

cmd打开%JAVA_HOME%/bin

输入

jvisualvm -J-Djavax.net.ssl.keyStore=E:/CodeRepository/keystore/visualvm.keystore 
-J-Djavax.net.ssl.keyStorePassword=123456 
-J-Djavax.net.ssl.trustStore=E:/CodeRepository/keystore/visualvm.truststore 
-J-Djavax.net.ssl.trustStorePassword=123456

轻松拿捏,简简单单
在这里插入图片描述

靓仔们的 【三连】 就是我创作的最大动力,如果本篇博客有任何错误和建议,欢迎靓仔们留言!

  • 13
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
VisualVM是一个功能强大的Java虚拟机(JVM)监控和性能分析工具。它可以与各种Java开发工具集成,其中包括JetBrains的IntelliJ IDEA。 要在IntelliJ IDEA中使用VisualVM,您可以按照以下步骤进行操作: 1. 在IntelliJ IDEA中,打开您要进行性能分析的Java项目。 2. 转到“Run”菜单,然后选择“Edit Configurations”选项。 3. 在“Edit Configurations”对话框中,选择您的应用程序配置。 4. 在右侧面板中,找到“VM options”字段,并添加以下参数: ``` -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false ``` 这些参数将启用Java虚拟机监视和管理功能,并将其暴露在本地端口9010上。 5. 保存配置并运行您的应用程序。 6. 打开VisualVM工具。 7. 在VisualVM中,单击“File”菜单,然后选择“Add JMX Connection”选项。 8. 在“Add JMX Connection”对话框中,输入以下信息: - JMX Connection:localhost:9010(根据您在第4步中指定的端口进行更改) - Display Name:任意名称以标识此连接 - Username和Password:如果您在第4步中启用了身份验证,则需要提供凭据。 9. 单击“OK”以添加JMX连接。 10. 现在,您可以使用VisualVM来监控和分析您的应用程序的性能。 请注意,这只是VisualVM与IntelliJ IDEA集成的一种方法。还有其他方法可以使用VisualVM进行性能分析,例如使用命令行启动JVM并将其连接到VisualVM。根据您的需求和偏好,您可以选择适合您的方法来使用VisualVM与IntelliJ IDEA。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值