• jvisualvm的使用


    jvisualvm的使用

    VisuaIVM(All-in-One Java Troubleshooting Tool)是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。是目前为止功能最强大的运行监测和故障处理工具。

    1、Windows监控本地的JVM

    1.1、首先需要配置JAVA环境

    1.2、进入jvisualvm目录,路径:%JAVA_HOME%/bin下面的jvisualvm,双击jvisualvm.exe,弹出页面

     1.3、在上面界面中的”本地”中,选择需要监控的JAVA进程,点击连接

    监控:显示的是当前系统的CPU、内存、类和线程的相关资源的使用情况。其中"堆dump"可以查看堆的详细状态,包括堆的概况,里面所有的类,还能点进具体的一个类查看这个类的状态。

    线程:能够显示线程的名称和运行的状态,在调试多线程时必不可少,而且可以点进一个线程查看这个线程的详细运行情况

    2、远程监控JVM(Tomcat示例)

    远程服务器:centos7   中间件:Tomcat

    3.1、服务端Tomcat配置

    1、Tomcat的catalina.sh需要配置,重启tomcat

    JAVA_OPTS="$JAVA_OPTS  -Djava.rmi.server.hostname=10.1.1.145"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.port=9000"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.rmi.port=9000"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.ssl=false"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.authenticate=false"

    备注

    JAVA_OPTS="$JAVA_OPTS  -Djava.rmi.server.hostname=10.1.1.145"   //指定jconsole连接的IP

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.port=9000" //指定jconsole连接端口

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.rmi.port=9000"  //这句一定要添加,不添加就无法成功

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.ssl=false"  //关闭ssl认证

    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"  //关闭用户密码认证

    其他jar包应用,在启动文件中添加:

    nohup java -Djava.rmi.server.hostname=10.1.1.145  -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.rmi.port=9000 -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar    xxx.jar &

    2、修改/etc/hosts

    注释掉127.0.0.1  

    新增:10.1.1.145  localhost localhost.localdomain

    3、查看9000端口是否有

    $netstat -ntlp

    4、jvisualvm监控

    点击”文件”,选择“添加JMX连接”

     

     

    jvisualvm使用密码进行访问

    1、服务端配置中修改:authenticate=true

       -Dcom.sun.management.jmxremote.authenticate=true

       -Dcom.sun.management.jmxremote.pwd.file=     //指定正确的密码文件

    JAVA_OPTS="$JAVA_OPTS  -Djava.rmi.server.hostname=10.1.1.145"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.port=9000"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.rmi.port=9000"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.ssl=false"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.authenticate=true"

    JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.pwd.file=/home/cg/java/jdk1.8.0_221/jre/lib/management/jmxremote.password"

    2、Jdk/jre/lib/management下的jmxremote.password.template,拷贝一份叫jmxremote.password。进去将内容全部删去,添加一行

    monitorRole  123456   //(用户名,密码)

    controlRole   123456  //(用户名,密码)

    备注:monitorRole  和monitorRole  用户已在jmxremote.access配置(模板)

    3、将jmxremote.password和jmxremote.access改成600权限,和所属该程序用户

    chmod 600 jmxremote.access  jmxremote.password

    4、jvisualvm使用用户名和密码访问(例如:controlRole/123456)

     因为未配置SSL,所以这里选是

    正常监控:

    其他:如不输入用户名和密码,会自动弹出需要用户名和密码

     

     

    参考:https://www.jianshu.com/p/0308983dc04c

    https://blog.csdn.net/qq_23986927/article/details/113242408

  • 相关阅读:
    嘿~ Win安装失败?来试试DeepinOS
    热门免费api接口:含物流api,短信api,天气api等
    【SQL刷题】Day11----SQL通配符专项练习
    【机器学习】PyTorch中 tensor.detach() 和 tensor.data 的区别
    ENVI大气校正方法反演Landsat 7地表温度
    前端基础(四十五):你不知道的JavaScript - 解构、函数默认传参、类super、模板字面量、生成器提前完成、集合、新增API
    上手之Python之异常
    【SwiftUI模块】0015、SwiftUI自定义音频播放器
    【pytest】conftest.py使用
    计算机视觉与深度学习-经典网络解析-VGG-[北邮鲁鹏]
  • 原文地址:https://blog.csdn.net/fen_fen/article/details/126012520