系统吞吐量、QPS(TPS)、并发数等概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jackyzhousales/article/details/83002890

1. 概念

1.1. 系统吞吐量 1.2. QPS(TPS) 1.3. 并发数 1.4. 响应时间 1.5. 关系

2. 系统吞吐量评估

1.系统吞吐量

一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。 系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间 QPS(TPS):每秒钟request/事务 数量 并发数: 系统同时处理的request/事务数 响应时间: 一般取平均响应时间

(很多人经常会把并发数和TPS理解混淆)

理解了上面三个要素的意义之后,就能推算出它们之间的关系:

QPS(TPS)= 并发数/平均响应时间 或者 并发数 = QPS*平均响应时间

假设压力测试出的QPS(TPS)为100,在并发数等要素不超标的情况下,系统的日吞吐量大致:100 * 10 * 3600=360万(相当于按最高TPS访问10个小时)。 一个典型的上班签到系统,早上8点上班,7点半到8点的30分钟的时间里用户会登录签到系统进行签到。公司员工为1000人,平均每个员上登录签到系统的时长为5分钟。可以用下面的方法计算。

QPS = 1000/(30 * 60)事务/秒

平均响应时间为 = 5 * 60秒

并发数= QPS*平均响应时间=1000/(30 * 60) *(5 * 60)=166.7。

3.QPS

每秒钟处理完请求的次数;注意这里是处理完。具体是指发出请求到服务器处理完成功返回结果。可以理解在server中有个counter,每处理一个请求加1,1秒后counter=QPS。

4.TPS

每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多

5.并发数

并发数:系统同时处理的request/事务数,指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。

6.响应时间(RT)

响应时间:一般取平均响应时间,响应时间,处理一次请求所需要的平均处理时间

7.关系

QPS(TPS)=并发数/平均响应时间、并发数=QPS(TPS)*平均响应时间。 一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,在应用场景访问压力下,只要某一项达到系统最高值或超标,系统超负荷工作、上下文切换、内存等其他消耗导致系统性能下降,系统的吞吐量会下降反而会下降。

8.系统吞吐量评估

指单位时间内系统处理用户的请求数,从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量,从网络角度看,吞吐量可以用:字节/秒来衡量,对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,它能够说明系统的负载能力

9. 计算关系

QPS = 并发量 / 平均响应时间

并发量 = QPS * 平均响应时间

QPS提升带来什么?

QPS提升说明单台服务器处理能力提升,如果QPS提升1倍,服务器资源减少1半,或者说服务器不变可以支撑2倍的请求量。 如何提升QPS?

  1. 减少CPU的使用时间(哪些代码会消耗CPU:循环、字符串拼接\查找\替换、编码\解码、序列化\反序列化、压缩)

  2. 增加CPU的数量

  3. 减少同步锁 (如果CPU不能被压到85%以上,并且此时的QPS已经达到了峰值,则说明另有瓶颈,接下去关注内存

RT提升带来什么? 响应速度提升说明单词请求的处理速度提升,用户感觉任务处理速度更快,系统反应速度更快。当然在处理能力不变的情况下,RT的提升必然会提升QPS。 如何提升RT?

  1. 减少I/O的响应时间

  2. 减少I/O的调用次数

  3. 减少CPU使用时间(当然在I/O占大头的应用里,这方面优化效果肯定不明显)

参考文献

https://blog.csdn.net/wind19/article/details/8600083

猜你喜欢

转载自blog.csdn.net/jackyzhousales/article/details/83002890