关于windows:VisualVM工具的使用

40次阅读

共计 3279 个字符,预计需要花费 9 分钟才能阅读完成。

环境:近程的 3A 服务器
1、VisualVM 工具的应用
VisualVM,可能监控线程,内存状况,查看办法的 CPU 工夫和内存中的对 象,已被 GC 的对象,反向查看调配的堆栈(如 100 个 String 对象别离由哪几个对象调配进去的)。
VisualVM 应用简略,简直 0 配置,性能还是比拟丰盛的,简直囊括了其它 JDK 自带命令的所有性能。

1.1 启动
在 jdk 的装置目录的 bin 目录下,找到 jvisualvm.exe,双击关上即可。

1.2、查看本地过程

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

1.5、抽样器

1.6、监控近程的 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 连贯近程主机

1.7、应用 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=TheLong 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=chihay 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
轻松拿捏,简简单单

正文完
 0