一.TPS(Transaction Per Seconds)
TPS指标的目的:判断整个系统的容量有多大!
这个指标一般分为三个级别?
1.接口级别、业务级别和用户级别
1.1.接口级别一般特指一个接口从发送请求到接收请求的完成时间
1.2.业务级别一般特指几个接口通过预定的调用顺序,共同完成一项业务的时间
1.3.用户级别一般特指从前端页面发起调用,调用了后端多个接口来完成一项业务的时间
如何计算TPS?
假设有10000并发用户,一般并发度为5%[特指:涵盖80%的性能测试情况],
TPS:10000*5%=500
公式:
响应时间为100ms,1(s)秒=1000(ms)毫秒
并发线程数:500TPS/(1000ms/100ms)=50并发线程
二.并发线程数
2.在线用户数和并发用户数的区别
2.1.在线用户数:目前登录入系统的人员总数
2.2.并发用户数:目前登录入系统并进行进行相关操作的人员总数
2.3.客户端发起的线程数与服务器可达到的并发数并无直接关,应该使用足够的线程数,让服务器达到事务饱和
2.4.采取策略:采用阶梯式增压的方式,不断的加大客户端发出的线程数,直至服务器处理不过来
在性能测试过程中,我们常说的并发线程数特指并发用户数
如何计算并发线程数-Concurrent Thread Or Concurrent User?
假设有10000个在线用户数,一般并发度为5%[特指:涵盖80%的性能测试情况]
并发线程数:10000*5%=500(个)
三.响应时间-Reponse Time
RT指标的目的:判断整个系统的处理业务速度有多快!
响应时间:处理或者完成一次请求所需要的平均处理时间
四.错误率-Error Rate
1.正常情况,http status code = 200
2.异常或者出错情况,http status code = 400/404/500
3.错误率:5%、10%、15%、20%
五.客户端损耗
性能测试的目标是测试服务器上某个应用的性能,我们应该尽量减少客户端在建立连接,构造请求方面的损耗,可以通过以下几个手段去降低客户端的损耗,使我们跟专注于服务器端的性能
1.增加客户端线程的复用,也就是增加线程的循环次数
2.当客户端需要构造1000,甚至超过1000个线程的时候,可采取多个客户端,分布式发起要求的线程数,以免造成单台客户机的资源占用率过高
JVM甚至出现OutOfMemory的Error
3. 客户端的网络环境,尽量达到100M甚至1000M的水平,避免客户端发起的请求,受到网络带宽抖动的影响
六.CPU多核和超线程
1.概念
1.1.每个单位时间内,CPU只能处理一个线程(Thread)。除非有两个核心处理单元,否则要想在单位时间内处理超过一个的线程是不可能的。
1.2.超线程HT(Hyper-Threading)技术是在单个核心处理单元中集成两个逻辑处理单元,也就是一个实体内核(共享的运算单元),两个逻辑内核(有各自独立的处理器状态),从而可以在单位时间内处理两个分别进行整数和浮点运算的线程,模拟双内核运作
2.多线程跟多核CPU的关系
2.1.多线程只是为了提高 CPU 利用率,多线程是跟 CPU 核数是没有关系的,现代计算机的单 CPU 多核(相比较多 CPU 单核)都是为了提高计算效率,多线程跟 CPU 核数是没有关系的
2.2.多线程只是逻辑上的做事的方式,CPU 核数是提高效率的物理手段
2.3.多线程开发,为了提高 CPU 利用率
3.事务处理数量和多核CPU/超线程的关系
3.1.例如:对于一个10核CPU,未开启超线程功能,某时间节点上(假设每秒作为一个时间片)的同时处理的事务不会超过10个
3.2.例如:对于一个10核CPU,开启超线程功能,某时间节点上(假设每秒作为一个时间片)的同时处理的事务不会超过20个