一、调优指标
- 首先列出性能调优指标,对于所有性能监控和管理来说,有三个维度是通用的
- 延迟(Latency)--如:所有交易必须在10秒内得到响应。
- 吞吐量(Throughput)--如:每天必须能处理100万个订单。
- 系统容量(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
通过从三种不同的维度来进行考虑,测量,并调优延迟和吞吐量,此外还要考虑到系统容量的约束。