• VisualVM工具的使用


    环境:远程的3A服务器

    1、VisualVM工具的使用

    VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。

    VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。

     

    1.1启动

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

     

     1.2、查看本地进程

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

     1.4、查看线程详情

     

     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

    轻松拿捏,简简单单

     

  • 相关阅读:
    华为---RSTP(二)---RSTP基本配置示例
    行情不好,我还是啃下了27K的offer
    DBus笔记
    【学习笔记】「JOI Open 2022」长颈鹿
    线程是什么?线程的相关概念以及基本的使用方法说明【内附可执行源码注释完整】
    微信小程序 电影院售票选座票务系统5w7l6
    echarts的一些技巧
    FFmpeg 硬件加速介绍
    【golang学习之旅】Go 的基本数据类型
    深入理解强化学习——马尔可夫决策过程:马尔可夫决策过程和马尔可夫过程/马尔可夫奖励过程的区别
  • 原文地址:https://blog.csdn.net/m0_72838865/article/details/126539849