• Java web应用性能分析之【jvisualvm远程连接云服务器】


    Java web应用性能分析之【java进程问题分析概叙】-CSDN博客

    Java web应用性能分析之【java进程问题分析工具】-CSDN博客

            前面整理了java进程问题分析和分析工具,现在可以详细看看jvisualvm的使用,一般java进程都是部署云服务器,或者托管IDC机房。手里有一台阿里云主机,刚好用来做实验。配置jvisualvm连接阿里云主机,分为两步。

    1.配置jmxremote

    1. -Djava.rmi.server.hostname=39.99.211.248 阿里云主机这个公网ip一定要显示加上去
    2. -Dcom.sun.management.jmxremote 启用jmxremote
    3. -Dcom.sun.management.jmxremote.port=8899 jmx远程连接时使用的端口,设置成任意未被占用的端口即可
    4. -Dcom.sun.management.jmxremote.rmi.port=8899
    5. -Dcom.sun.management.jmxremote.authenticate=true 否需要身份认证,设置为false不需要用户名和密码
    6. -Dcom.sun.management.jmxremote.ssl=false 是否使用ssl,ssl是一个通信加密的安全协议,不启用
    7. -Dcom.sun.management.jmxremote.password.file=/usr/local/soft/jmxremote.password 登录密码
    8. -Dcom.sun.management.jmxremote.access.file=/usr/local/soft/jmxremote.access 登录账号
    9. 如果设置为true则需要额外配置以下2个参数
    10. Dcom.sun.management.jmxremote.access.file:access文件
    11. [root@phost ~]# vim /usr/local/soft/jmxremote.access //任意目录下创建access文件
    12. zhouxx readwrite //格式为: 用户名 (空格)权限
    13. Dcom.sun.management.jmxremote.access.file:密码文件
    14. [root@phost ~]# vim /usr/local/soft/jmxremote.password //创建密码文件
    15. zhouxx 123456 //格式为: 用户名 (空格) 密码

    java进程的jvm参数配置示例:

    1. JAVA_OPTS=" -server -Dfile.encoding=UTF-8 -Djava.rmi.server.hostname=39.99.211.248 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8899 -Dcom.sun.management.jmxremote.rmi.port=8899 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=/usr/local/soft/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/usr/local/soft/jmxremote.access -Dapp.config=/home/web/demo/application.yaml -Xms64m -Xmx64m -Xmn64m -Xss1m -XX:MetaspaceSize=16m -XX:MaxMetaspaceSize=64m -XX:+UseConcMarkSweepGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintCommandLineFlags -Xloggc:log/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log/"
    2. JAVA_OPTS=" -server -Dfile.encoding=UTF-8 -Djava.rmi.server.hostname=39.99.211.248 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8899 -Dcom.sun.management.jmxremote.rmi.port=8899 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=/usr/local/soft/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/usr/local/soft/jmxremote.access -Dapp.config=/home/web/demo/application.yaml -Xms64m -Xmx64m -Xss1m -XX:MetaspaceSize=16m -XX:MaxMetaspaceSize=64m -XX:+UseG1GC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintCommandLineFlags -Xloggc:log/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log/"
    3. java $JAVA_OPTS -jar mydemo-1.0.0-SNAPSHOT.jar

    2.开端口:开阿里云端口和服务器上防火墙端口

    2.1开阿里云端口

    为什么是全端口开发1-65535,而不是只开8899端口?

            因为jmx不仅仅只启用8899端口,还会随机再起一个端口,如当前15641进程还开启了45919,这个端口不固定,所以只能针对117.147.118.199客户端全开放。

    2.2 ubuntu的防火墙端口:ufw allow from  117.147.118.199

    3.jvisualvm远程连接服务器上的java进程,监控java进程状态

    基本参数信息,相当于jps和jinfo

    监控cpu、堆内存、元空间、类加载、线程等信息

    线程信息:相当于jstack,也可以导出线程dump文件

    抽样器:相当于jstack、jmap、jhat

    快照信息

    buffer pool监控

    jconsole插件

    visual GC:相当于jstat

    提示 “不受此jvm支持”

    参考:jvisualvm 连接 jstatd 远程监控 jvm 或 Visual GC提示"不受此JVM支持“_虚拟机 jvisualvm 不受此jvm-CSDN博客

    Tracer:同样是cpu、堆、元空间、类加载、线程等的监控

    4.jvisualvm分析jvm的dump文件

            jvisualvm通过分析dump文件,定位oom问题、cpu飙高问题、大内存对象问题等等

  • 相关阅读:
    springboot集成zookeeper实现prometheus自动发现
    【构建并发程序】8-并发队列之阻塞队列
    java自定义Excel导出实现方案汇总
    K8S的安装kubernetes-dashboard服务起来了,访问不到解决
    Notepad++正则查询替换操作
    SpringMvc--文件上传下载
    EIP-1559
    flask 发送ajax
    虚拟内存技术的基本概念(局部性原理,特征,实现)
    搭建私有Git服务器:GitLab部署详解
  • 原文地址:https://blog.csdn.net/Rookie_CEO/article/details/139397263