• 系统优化怎么做-JVM优化之VisualVM


    大家好,这里是「聊聊系统优化 」,并在下列地址同步更新

    在这里我会从基于J2EE系统及互联网架构方面,来谈谈系统优化的各个方面,干货满满,欢迎订阅及关注!

    前言

    在上一期主要讲到JVM优化的概念及经验。这一节章节去讲述相关工具的基本使用。

    VisualVM

    JDK自带,VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。

    Tomcat Jmx配置

    CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=jj.xx.yy.zz -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
    • 替换其中的IP jj.xx.yy.zz 地址
    • 配置{jdk_path}/jre/lib/management/jmxremote.password
    直接复制jmxremote.password.template, 修改默认访问密码
    • 设置访问属性
    chmod +w jmxremote.password  
    chmod 0400 jmxremote.password

    概述页面

    主要信息

    • 主机及端口
    • jvm参数信息

    监视界面

    主要信息

    • cpu指标
    如cpu是多核,如果是n核,这里显示的单核平均占用
    在通过top命令,看到的是 乘上n的结果,VisualVM显示 10.2/4(核数) =2.5%

    • 类加载数量
    • 堆及PerGen的大小
    • 类加载数量
    • 线程数

    操作

    • 执行垃圾回收
    • 堆Dump

    线程界面

    主要信息

    • 实时及守护线程数
    • 线程状态 运行,休眠, 等待, 驻留, 监视

    抽样器界面

    CPU监控

    • 哪些方法是热点方法
    • 各个方法占用CPU时间及其比例

    内存监控

    每个线程分配内存

    VisualVM常用插件

    安装插件

    工具->插件

    检查新版本

    需要配置url,不然会报以下出错

    在插件->设置页面填入合适的

     在这个网站选择合适的插件地址

    填入URL地址,确定

    配置成功后,在可用插件列表

    常用插件

    • Visual GC
    • Jstatd
    • Threads Inspector
    • Tracer-Jvmstate , Collection, Jvm Probes

    重要插件

    VIsual GC

    查看服务GC状态,需要配置jstatd并启动
    cd /usr/local/src/jdk1.8.0_131/bin/ 
    vim jstatd.all.policy  

    加入以下代码

    grant codebase "file:${java.home}/../lib/tools.jar" 
    { permission java.security.AllPermission; };
    如果没有配置{java.home},填写jdk的绝对路径也可行

    在jdk.home/bin下启动

    ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=ip.xx.yy.zz -J-Djava.rmi.server.logCalls=true
    更改以上Ip ip.xx.yy.zz地址 
    指定服务的端口号,使用默认端口1099。确认1099没有防火墙拦截

    配置jstated连接

    VisualGC界面

    注意点:

    • 内存大小分情况
    • 主要关注 GC Time长短及间隔

    Tracer

    可以查询Heap,PerGen,Classes, Threads的

    如图

    Tracer可以监控很多项目

    • Heap
    • PerGen
    • Cleass
    • Treads
    • 等等

    利用VisualVm检查full GC

    1. VisualGC查看是否old Gen,Eden是否存在持续上升
    2. Mbean查看
    3. 利用sampler的分析内存采集,确定问题代码
    内存视图,查看当前哪些业务对象比较多,并存在一直递增的趋势
    线程视图,查看哪些线程分配的内存最多

    IntelliJ Idea集成VisualVm

    1. File ->Setting->Plugins->Browsers Repositrories
    2. 搜索VisualVM Launcher
    3. 安装, 重启Idea
    4. 默认Run及Debug旁边,会出现Run With VisulaVm及DebugWith VisulaVm的按钮

    方便本地压测监控JVM情况

    总结

    本节主要讲解VisualVm的使用以及常用插件的使用,好的工具对于找到问题有事半功倍的效果。在实践中理解理论知识。

  • 相关阅读:
    XML-Signature 语法和签名
    ZooKeeper相关资料集锦
    分布式锁
    spring-boot 知识集锦
    Spring boot druid 多数据源配置
    常见 SQL 语句的加锁分析
    fastjson反序列化多层嵌套泛型类与java中的Type类型
    Clean ThreadLocals
    java AOP Before, After, AfterReturning, AfterThrowing, or Around 注解
    java 线程间的通信 (wait / notify / notifyAll)
  • 原文地址:https://www.cnblogs.com/changsong/p/9593913.html
Copyright © 2020-2023  润新知