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
轻松拿捏,简简单单
靓仔们的 【三连】 就是我创作的最大动力,如果本篇博客有任何错误和建议,欢迎靓仔们留言!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbkiej
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13