调优 | 别再说你不会 JVM 性能监控和调优了

  • 首页
  • 荣誉资质
  • 新闻中心
  • 你的位置:焦作市恒辉精密制造有限公司 > 荣誉资质 > 调优 | 别再说你不会 JVM 性能监控和调优了

    调优 | 别再说你不会 JVM 性能监控和调优了

    发布日期:2022-08-07 03:51    点击次数:168

    本文转载自微信公众号「小明菜市场」,作者小明菜市场 。转载本文请联系小明菜市场公众号。   

     Hi ! 我是小小,今天是本周的最后一篇,本篇将会着重讲解关于 JVM 调优和性能监控方面的内容

    常用工具

    常用工具主要有 JDK 自带工具与 Arthas 这两种工具。

    JDK 自带工具

    jps 虚拟机进程状况工具

    用于查看虚拟机进程状况的工具 命令示例

    $ jps 15236 Jps 14966 Example1 

    jstat 虚拟机统计信息监视工具用于查看虚拟机的堆内存,内存信息,类的装载和卸载信息等内容

    显示堆内存信息

    jstat -gc 14966  S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT 2048.0 2048.0  0.0    0.0   12800.0   9345.8   34304.0    26638.8   5248.0 4971.3 640.0  554.9       2    0.032   2      0.049    0.082 

    每隔 1000 毫秒打印堆内存信息,打印十次

     

    查看类的装载和卸载信息

    $ jstat -class 14966 Loaded  Bytes  Unloaded  Bytes     Time    829  1604.4        0     0.0       0.37 

    Java 配置信息工具

    查看JVM的启动参数

    $ jinfo -flags 26472 VM Flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=17301504 -XX:MinHeapDeltaBytes=524288 -XX:New 

    jstack Java 堆栈跟踪工具

    即,对当前的内存生成相关的快照,用于保存相关的快照信息。

     

    jmap Kava 内存映射工具

    用于查看内存对象数量和内存空间占用

     

    jhat 生成 html 类型的快照文件

    $ jhat dump.hprof Reading from dump.hprof... Dump file created Sun May 03 17:09:07 CST 2020 Snapshot read,
    杨幂范冰冰 resolving... Resolving 42293 objects... Chasing references, expect 8 dots........ Eliminating duplicate references........ Snapshot resolved. Started HTTP server on port 7000 Server is ready 

    启动后,在浏览器打开,http://localhost:7000/

     

    jvisualvm & VisualVM: 堆转储快照分析工具

    和上方命令一样,荣誉资质直接导出文件,而不是网站

     

    对象信息

     

    线程信息

     

    jconsole: JVM 性能监控

    启动用户界面用于进行性能监控

     

    启动成功以后

     

     

    Arthas

    阿里开源的Java诊断工具

    安装

    下载

    wget https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar 

    解压

    unzip arthas-packaging-bin.zip 

    安装

    sudo su adminrm -rf /home/admin/.arthas/lib/*cd arthas./install-local.sh 

    启动

    ./as.sh 

    help

     

    dashboard 实时数据面板

     

    thread 线程信息

     

     

    jad 反编译类

     

    watch 数据观测

     

    调优

    部署方式

     

     

    服务器经常出现卡顿这是由于 Full GC 时间过长导致,原因一般是

    新生代太小,对象提前进入老年代,触发 Full GC 老年代较大,一次 Full GC 时间较长

    解决方案是 调小 NewRatio 的值,尽可能的减少对象进入老年代

    调整内存占用

    直接内存

    调整 XX:MaxDirectMemorySize 避免发生 OutOfMemoryError: Direct buffer memory

    线程堆栈

    调整 -Xss 避免发生 StackOverflowError 或 OutOfMemoryError: unable to create new native thread

    从 GC 角度解决新生代大量对象存活,Minor GC 时间过长参数调整

    -XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0 -XX:AlwaysTenure 

    关于作者

    我是小小,生于二线,活在一线的程序猿,我是小小,我们下期再见。

     



    TOP