环境:近程的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
轻松拿捏,简简单单