压测场景设计和压测方案制定
本章内容根据《分布式服务架构》整理
1.业务模型分析
2.压测执行
3.压测工具
4.小结
业务模型分析
对业务模型进行分析,选择日常请求量大且路径覆盖范围广的典型交易,建立测试业务模型,确定各接口请求量的对比。
交易系统的四个接口,下单,下单查询,退款和退款查询,各个接口的比例依次为60%,37%,1%,2%。
测试类型
1.基准测试
基准测试指单线程下对单接口的测试,主要调试测试脚本的正确性以及每个接口无压力情况下每个请求的响应时间,//这个基本本地调试调用接口就可以测试,在于测试人员对接的时候能够调试不同环境下的响应时间。
2.容量测试
容量测试指检查系统能处理最大业务量,在测试过程中采用梯度加压的方式不断增加并发用户量,监控响应时间和系统资源的变化情况,响应时间曲线的拐点是业务量就是系统最大业务量//测试人员测试,时间较久
3.负载测试
负载测试用于测试单个接口在不产生任何错误的情况下能够提供的最佳的系统性能,从而得出单个接口在相应时间满足用户需求时的最大吞吐量和并发数。//负载测试在几十分钟内完成
4.混合业务测试
混合业务测试是按照业务流程要求对接口调用按照比例进行编排,并采用一定的测试加压方式进行加压,获取系统对业务流程的最大处理能力//几十分钟内完成
5.稳定性测试
按照混合测试的业务系统进行施加合理的压力,并持续一段时间。12-24小时完成
6异常测试
异常测试是指依赖服务中断,网络中断,硬件故障等异常情况下,系统对业务的影响情况。
加压方式
1.瞬间加压:通过测试工具模拟大量并发请求
2.逐渐加压:一定周期内为抛物线的趋势
3.梯度加压:逐渐增加用户并发量
4.确定延时方式
压测执行
观察系统的资源占用情况
/系统层面:CPU,内存,磁盘I/O,网络带宽,线程数,打开的文件句柄,线程切换,和打开的Socket数量
/接口的吞吐量,响应时间,超时情况等
/数据库的慢 SQL,SQL行读,锁等待,死锁,缓冲区命中,索引命中等
/消息队列的吞吐变化,响应时间,超时情况
/压测过程中记录压测记录
/分析是否满足既定压测目标
/指出系统存在的瓶颈点
压测工具:ab,jmeter,mysqlslap.sysbench,dd,LoadRunner,Hprof
我记得我整理了ab,jmeter的文章,但ab在哪忘记了,贴一下jmeter的链接Jmeter系统入门教程(安装、组件使用、Demo展示、连接数据库、压测报告)
现在根据书上hprof
测试环境windows,4CPU,8G内存
java -agentlib:hprof=cpu=times;interval=20;depth=3 com.kk.netty.HprofSample
demo
package com.kk.netty;
/**
* @author zhaokkstart
* @create 2020-02-10 19:24
*/
public class HprofSample {
public void slowAction(){
try {
System.out.println("Action is run");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void slowAction2(){
try {
System.out.println("Action2 is run");
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
HprofSample hprofSample = new HprofSample();
hprofSample.slowAction();
hprofSample.slowAction2();
}
}
容量和性能评估保证系统设计能够满足系统非功能质量需求,性能测试保证系统实施按照既定目标实现项目的非功能质量指标。
常用应用层性能指标参考
1.通用标准
容量按照峰值的5倍冗余计算
分库分表后的容量一般可以存储30年的数据
第三方查询接口吞吐量为5000/s
单条数据库记录大概占1KB
2.MySQL
单端口读写:1000/s
单端口写:700/s
单表容量:5000万条
3.数据库
读写数据库一条记录在毫秒级别,大于500ms一般认为超时
MySQL在4核心,256G内存的CPU中性价比最好
单线程处理
吞吐量=1s/响应时间
多线程
吞吐量=(1s/响应时间)*并发数
- 点赞
- 收藏
- 关注作者
评论(0)