JVM理论(七)性能监控与调优

概述

JVM理论(七)性能监控与调优_第1张图片

 性能优化的步骤

  • 性能监控:就是通过以非强行或入侵方式收集或查看应用程序运行状态,包括如下问题

    • GC频繁
    • CPU过载过高
    • OOM
    • 内存泄漏
    • 死锁
    • 程序响应时间较长
  • 性能分析:通常在系统测试环境或者开发环境进行分析
    • 通过查看程序日志以及GC日志,或者运用命令行工具如jstack、jmap、jinfo等
    • 导出dump快照文件,利用内存分析工具分析文件
    • 使用阿里的arthas或者jprofiler、jconsole、jvisualvm等查看jvm状态
  • 性能优化:目的就是改善应用程序的响应时间或者吞吐量
    • 更改程序参数、
    • 源代码
    • 属性配置

注意: 为何要调优?防止出现OOM以及解决OOM和减少FGC出现的次数

JVM命令行监控工具 (适用于无GUI环境下的服务器环境且已安装完整JDK的条件下使用)

JVM理论(七)性能监控与调优_第2张图片

  • jps: java process status 表示查看正在运行的java进程
    • -l: 输出应用程序主类的全类名

  • jstat: 查看JVM统计信息,包括虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据
    • -class: classLoader相关信息
    • -gc: 显示与GC相关信息
-gc +Pid(进程id):显示各指标信息
JVM理论(七)性能监控与调优_第3张图片 -gcutil +Pid(进程id) +internal(间隔多少毫秒):显示每间隔时间下各指标信息
-gcnew+Pid(进程id):显示新生代区信息
-gcold+Pid(进程id):显示新生代区信息
  • jinfo: 实时查看和修改jvm的配置参数信息
  • jmap: 导出内存映像文件即JVM堆快照dump文件
    • -dump:file=C:/tmp/dump.hprof 4040 --表示将java进程ID(4040)的堆快照文件导出到C:/tmp/dump.hprof(常常结合jps使用)
  • jhat: jdk自带堆分析工具(jdk9以后已删除该命令,官方建议使用visualVM代替)
  • jstack: 打印jvm中线程快照(即每条线程正在执行的方法的堆栈集合),常常用于定位线程出现长时间停顿的原因,如死锁、死循环、请求外部资源导致长时间等待
    • 在thread dump中,重点关注如下几种状态
    • 死锁: Deadlock
    • 等待资源: Waiting on condition
    • 等待获取监视器: Waiting on monitor entry
    • 阻塞: Blocked

JVM监控及诊断的GUI工具

visual VM(jdk自带产品)

JVM理论(七)性能监控与调优_第4张图片 比jconsole工具强大多了

Jprofiler(商业收费,功能全面)

JVM理论(七)性能监控与调优_第5张图片 window下可视化分析工具

Arthas(目前市场上比较流行,可以集成到项目中,在系统运行过程中动态查看内存等相关状态)

注意:

        a.从官网下载arthas后确保本地jdk已安装成功;

        b.系统正常运行后,启动arthas进行诊断监测项目。(选择项目pid进行后续诊断)

阿里的开源产品组件,官网:简介 | arthas

JVM理论(七)性能监控与调优_第6张图片​ window下可视化分析工具

 

GC在线日志分析工具-GCEasy

GCEasy工具在线网址

Universal JVM GC analyzer - Java Garbage collection log analysis made easy (gceasy.io)

JVM理论(七)性能监控与调优_第7张图片

  GCEasy是一款在线GC日志分析器,可以通过GC日志分析执行内存泄漏检测、GC暂停原因分析、JVM配置建议优化

GCEasy在线分析指标分析

JVM理论(七)性能监控与调优_第8张图片 JVM内存分配以及各内存达到的高峰值

 

JVM理论(七)性能监控与调优_第9张图片 吞吐量和低延迟指标

 

JVM理论(七)性能监控与调优_第10张图片 GC总时间和平均时间

 

JVM理论(七)性能监控与调优_第11张图片 新生代和老年代GC占比情况

你可能感兴趣的:(#,JVM,jvm,java)