异步请求的时间怎么计算:
放入队列的时间+在消息队列排队的时间+拿走后处理的时间
整个消息队列瓶颈的地方在处理队列的时间
性能测试概念:
性能测试是通过工具或者手段来模拟正常的,峰值以及异常负载条件来对系统的各项性能指标进行测试
性能测试目的:
1,评估系统的能力:看系统能不能满足性能指标
2,识别体系中的弱点:系统是否哪个功能或者哪个接口是瓶颈的
3,验证系统稳定性和可靠性:长时间压力下系统是否能够稳定运行
4,系统调优:重复执行性能测试,验证系统调优是否取得预期效果
性能测试指标:
并发:
狭义:同一瞬间对同一系统发出相同的请求
广义:同一时间段内对同一个系统发起的多个请求
并发用户数:同一时间段内对同一个系统发起的多个请求的数量
tps:一秒钟处理来多少个事务,后来演变为一秒钟处理了多少个请求
qps:一秒钟系统处理了多少个查询
事务最早的概念来源于loadrunner,loadrunner中没有事务就没有响应时间
jmeter中有没有事务无所谓,jmeter中是以请求为单位的,本来没有事务但是可以加事务
事务是自己定义的,可以把一个请求当作一个事务也可以把几个请求当作一个事务
线程数和用户数,并发数之间的关联是什么?
工具(jmeter,loadrunner)概念里面没有用户数的概念,jmeter里面只有线程,loadrunner里面有线程和进程
工具维度,线程就是操作的用户,但是,线程或者用户不等于并发
当前系统就有200个用户在操作,请问当前200个用户等不等于200个并发,等不等于200个线程?
系统维度,不等于200个并发不等于200个线程
响应时间:
响应时间指的是客户端发出请求到收到响应的整个过程所经历的。
指从客户端发出一个请求开始时,到客户端接收到从服务器返回的响应结果线束经历的时间,
响应时间由请求发送时间,网络传输时间和服务器处理时间三部分组成。
n1+n2+n3+n4 网络传输时间
a1+a3+a2 应用程序处理时间 = 应用程序本身的逻辑处理时间+数据库服务器处理时间
a1+a2+a3+n2+n3 = 接口处理时间
n2+n3+a2 = 数据库耗时时间
开发埋点所说的接口响应时间 = a1+a2+a3+n2+n3,但是工具所说的响应时间还包括n1+n4+client接收和发送的时间
前端的性能通过工具测试不出来,不同的浏览器渲染时间不同,工具不会有渲染时间,
工具可以计算出图片的下载时间,但是不会测试出页面渲染时间
测试分为前端性能测试和服务端性能测试
前端是没有并发的,并发只在服务端,前端看页面卡顿和渲染
吞吐量:单位时间段内系统接收或者发送的字节数,是网络上的消耗(loadrunner内指的)
jmeter里面的吞吐量就是tps
现在吞吐量指单位时间段内的xxx
资源利用率:硬件利用率,软件利用率
性能测试:
1,目标值:tps 并发数(前提rt确定) rt(并发数确定)
tps为指标 rt不能超过多少 请求成功率
2,场景 单接口-----是否能满足目标值 10-15min
极限值场景----max值 以后的监控报警用 10-15min
混合场景/链路场景-----不同的场景混合,是否会有新的性能问题(线程死锁,数据库死锁,系统瓶颈。。。) 10-15min
稳定性场景-----内存泄漏/溢出 n*12h
性能测试的容量测试:
功能-----支持最大的单表数据量,mysql支持的最大单表量是200w
系统的并发量