一、调优指标


  • 首先列出性能调优指标,对于所有性能监控和管理来说,有三个维度是通用的
  1. 延迟(Latency)--如:所有交易必须在10秒内得到响应。
  2. 吞吐量(Throughput)--如:每天必须能处理100万个订单。
  3. 系统容量(Capacity)--如:必须能部署在4核8G内存上。

 二、工具查看log


1.JMX API 

  •  JMX是获取JVM内部运行时状态信息的标准API。可以编写程序代码,通过JMX API 来访问本程序所在的JVM,也可以通过JMX客户端执行(远程)访问。

最常见的JMX客户端是 JConsole 和JVisualVM(可以安装各种插件,十分强大)。

三、调优方式

JVM调优核心为调整年轻代、年老代的内存空间大小/堆内存大小及使用GC算法

        -Xms4G 是指:JVM启动时整个堆(包括年轻代、年老代)的初始化大小。
        -Xmx4G 是指:JVM启动时整个堆的最大值。
        -Xmn2G 是指:年轻代的空间大小,剩下的是年老代
        -XX:SurvivorRatio=1 是指年轻代空间中2个Survivor空间与Eden空间的大小比例。此处为1:1:1。
        -XX:+UseConcMarkSweepGC 是指:使用GC的回收算法类型。这里是CMS,JDK1.7以后推荐使用+UseG1GC,被称为G1类型(或Garbage First)的回收器。

(1)调优延迟指标

        假设有一个需求,每次作业必须在1000ms内处理完成。我们知道,实际的工作处理只需要100ms。
        也就相当于GC暂停不能超过900ms
        只要配置不同的内存大小以及算法,解析GC日志文件,并找出GC暂停中最长的那个暂停时间即可(可以保证怎么延迟也不会超过那个最长的暂停时间)。

(2)调优吞吐量指标

        假设有个需求,每小时完成1300万次操作处理。
        我们可以找到有效时间比较为合适的,通过 CPU核数*单核每小时能处理多少次操作处理 = 每小时处理多少次作业,找到合适的那个。

(3)调优系统容量

        假设将软件部署到服务器上,配置为4核10G。
        这样的话,系统容量的需求就变成:最大的堆内存空间不能超过8GB

通过从三种不同的维度来进行考虑,测量,并调优延迟和吞吐量,此外还要考虑到系统容量的约束。