系统性能指标:
1、业务指标
2、资源指标
3、中间件指标
4、数据库指标
5、前端指标
6、稳定性指标
7、批量处理指标
8、可扩展性指标
9、可靠性指标。
有效指标如下:
业务指标 | 资源指标 | 中间件指标 | 数据库指标 | ||||||
交易响应时间 | 系统处理能力(TPS、QPS、HPS) | 并发用户数 | 错误率 | CPU | 内存 | ThreadPool | JDBC(数据库连接数) | SQL | 吞吐量 |
1、500毫秒以下为佳 2、一般1秒以下, 3、3秒可接受 | 1、稳定压测:300次/秒可接受,500次/秒一般,800次/秒为佳 2、冲量压测:1000次/秒 3、纯redis压测要求2000+次/秒 | 600-可接受 800-一般 1000-为佳 | 95%-可接受 98%-一般 99.4%-为佳 | 1、CPU利用率70%-80%,属于警戒值 2、CPU利用率超过80%,即超出预警 | SWAP(与虚拟内存交换)交换内存利用率低于70% | 活动的线程数占比:80% | 数据库连接占比:80% | 查询: 1、200ms以内为佳; 2、一般1S以内; 3、最慢3S以内 写入: 1、500ms以内为佳; 2、一般1S以内; 3、最慢3S以内 | 2000个/S |
压测策略如下:
压测类型 | 优先级 | 目的 | 策略 | 备注 |
负载测试 | 中 | 主要关注系统在正常负载压力场景下,系统的性能指标,观察功能是否满足业务需求。找到性能较差的几个单接口和组合场景。 | 1、需要以用户需求或线上实际的负载情况,确定期望的性能指标值(QPS,响应时间等),然后以该负载的并发量为起点。 2、以一个固定并发增量逐步增大,观察性能指标是否仍然在可接受范围内。并发时间:15分钟左右 | |
压力测试 | 高 | 主要关注在多大并发压力下系统的性能会变得不可接受,或者出现性能拐点(崩溃),从而去分析系统的瓶颈,为后续优化作参考。 | 继续增大并发压力直到拐点出现,记录拐点前的各项指标即为指标的最大值,也就是性能瓶颈。利用最大并发数做压力测试,并发时间:30分钟左右 | |
疲劳强度测试\稳定性测试 | 最高 | 主要关注在一定负载下长时间运行后系统性能指标的变化情况。因为有些性能问题可能不会一下就暴露出来,例如内存泄漏问题,大量连接未释放问题,这些需要经过一段时间才会显现。 | 是在某个固定负载下做一个长时间的压力保持,观察一些可能发生问题的性能指标的曲线图是否保持稳定。80%最大并发数,进行稳定性测试,至少压8小时。 | |
负载跳变 | 中 | 关注系统对突然冲击力的性能影响,可以模拟从轻载突然到重载,或从重载突然到轻载,不断切换,观察系统的性能指标是否满足业务需求。 | 以10%最大并发量和90%最大并发量之间,不断来后切换,每种负载持续时间10s,整个场景持续运行至少8小时。 | |
瞬时超载能力测试 | 低 | 主要关注短时间内系统的处理超载能力,以超过最大并发量方式加压,观察系统的性能指标是否满足业务需求。 | 以110%最大并发数进行加压,以一个固定值不断增加,循环次数不变的方式,每次叠加固定值保证在3--5分钟内能发完所有请求,观察性能指标是否仍然在可接受范围内,直到出现性能性能拐点,此时找到短时间内系统的处理超载最大并发量。 |
过程 | 目的 | 备注 |
服务最小单元配置,单节点,无代理,压测至拐点或最大资源处(服务cpu或内存满了) | 最小配置,找到拐点或最大资源处的指标集a,尽量满足指标集a<预期指标集n | 最小单元:2C4G或4C4G或4C2G |
调优1,最大资源处,调整内存与处理器内核配比, | 达到内存使用率 约等于 cpu使用率, | |
再次压测拐点或最大资源处 | 得到当前最小配置的最大指标集b | |
调优2,预期指标集n / 指标集b = 总节点数j(最小配置) | 得到当前最小配置的总节点数j | |
调优3,实际节点数j1 * 配置倍数k = 总节点数j | 得到实际节点数j1和实际配置k | |
调优4,实际节点数j1和实际配置k + 代理服务(nginx和HA),再次压测 | 1.找到预期指标集n,2.找到80%资源处指标集,3.找到100%资源处指标集,4.性能拐点处指标集,都能满足预期指标集n | |
如调优4不能满足预期,可能是代理服务问题,测出代理服务瓶颈和最终指标集 | 得到实际生产中的最终指标集,或继续调优代理服务器 |
最大tps多少 | 系统处理能力 |
支持多少用户并发:平均响应时间小于1s | 拐点 |
性能最稳定范围:系统资源使用率在80%以下时,tps多大, | 最稳定的范围 |