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?
-
减少CPU的使用时间(哪些代码会消耗CPU:循环、字符串拼接\查找\替换、编码\解码、序列化\反序列化、压缩)
-
增加CPU的数量
-
减少同步锁 (如果CPU不能被压到85%以上,并且此时的QPS已经达到了峰值,则说明另有瓶颈,接下去关注内存
RT提升带来什么? 响应速度提升说明单词请求的处理速度提升,用户感觉任务处理速度更快,系统反应速度更快。当然在处理能力不变的情况下,RT的提升必然会提升QPS。 如何提升RT?
-
减少I/O的响应时间
-
减少I/O的调用次数
-
减少CPU使用时间(当然在I/O占大头的应用里,这方面优化效果肯定不明显)
参考文献