一.TPS(Transaction Per Seconds)

TPS指标的目的:判断整个系统的容量有多大!

这个指标一般分为三个级别?

1.接口级别、业务级别和用户级别

1.1.接口级别一般特指一个接口从发送请求到接收请求的完成时间

1.2.业务级别一般特指几个接口通过预定的调用顺序,共同完成一项业务的时间

1.3.用户级别一般特指从前端页面发起调用,调用了后端多个接口来完成一项业务的时间

如何计算TPS?

假设有10000并发用户,一般并发度为5%[特指:涵盖80%的性能测试情况],

TPS:10000*5%=500

公式:




qps 微服务 微服务性能tps1000_多线程


响应时间为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个