zoukankan      html  css  js  c++  java
  • 系统优化怎么做-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的使用以及常用插件的使用,好的工具对于找到问题有事半功倍的效果。在实践中理解理论知识。

  • 相关阅读:
    将vue文件script代码抽取到单独的js文件
    git pull 提示错误:Your local changes to the following files would be overwritten by merge
    vue和uniapp 配置项目基础路径
    XAMPP Access forbidden! Access to the requested directory is only available from the local network.
    postman与newman集成
    postman生成代码段
    Curl命令
    POST方法的Content-type类型
    Selenium Grid 并行的Web测试
    pytorch转ONNX以及TnesorRT的坑
  • 原文地址:https://www.cnblogs.com/changsong/p/9593913.html
Copyright © 2011-2022 走看看