之前写过一篇文章【并发编程】相关概念 介绍了进程与线程、同步和异步、并发与并行等概念,今天对我们平时朗朗上口的一些名词进行补充,并解释一下,到底什么是高并发?
一、QPS、TPS 与并发数
1.1 QPS
Queries Per Second
:每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也是最大吞吐能力。
1.2 TPS
Transactions Per Second
:每秒传输的事务处理个数。
一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程; 客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数; 事务的定义,可以一个接口、多个接口、一个业务流程等等。
1.3 QPS 和 TPS 区别
QPS
特征
每次请求,都要计数,QPS
统计的是每秒钟的请求数量。
TPS
的每个事务包括了如下 3 个过程:
向服务器发请求; 服务器自己的内部处理(包含应用服务器、数据库服务器等); 服务器返回结果给客户端。
每秒能够完成 N
个这三个过程,TPS
就是 N
。
光从概念上理解,大家还是有点儿懵逼。那我们来举个例子解释。
举个栗子
张三吃包子分为三个步骤,嚼-吞-咽,吃一个包子总耗时:
0.5
秒,我们把这个过程当作一个事务。
那么 QPS
就是 6
,因为按照张三这个速度,在一秒中吃两个包子,3 * 2 = 6
,即一秒钟发生了六个动作。
那么 TPS
呢,吃一个包子需要 0.5s
,那么在这个事务中,张三一秒钟能吃两个,所以 TPS = 2
。
总结
如果是对一个查询接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么 QPS = TPS
,否则,QPS ≠ TPS
如果是容量场景,假设 n
个接口都是查询接口,且这个接口内部不会再去请求其它接口,QPS =n* TPS
1.4 并发数
指系统能同时处理的请求数量,反应了系统的负载能力。
二、吐吞量
吞吐量是指系统在单位时间内处理请求的数量,TPS
、QPS
都是吞吐量的常用量化指标。
2.1 系统吞吐量要素
一个系统的吞吐量(承压能力)与
request
(请求)对CPU
的消耗,外部接口,IO
等等紧密关联。
单个 request
对 CPU
消耗越高,外部系统接口,IO
影响速度越慢,系统吞吐能力越低,反之越高。
2.2 重要参数
QPS(TPS)
:每秒钟request
/事务 数量;并发数:系统同时处理的 request
/事务数;响应时间:一般取平均响应时间。
2.3 关系
QPS(TPS)=并发数/平均响应时间
一个系统吞吐量通常有 QPS/TPS
,并发数两个因素决定。
每套系统这个两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统吞吐量就上不去了。
如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换,内存等等其他消耗导致系统性能下降。
三、PU、UV、RT、DAU
3.1 PV
PV(Page View)
:页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次。
可以统计服务一天的访问日志得到。
3.2 UV
UV(Unique Visitor)
:独立访客,统计 1
天内访问某站点的用户数。
可以统计服务一天的访问日志并根据用户的唯一标识去重得到。
3.3 RT
RT(response time)
:响应时间,是指系统对请求作出响应的时间,一般取平均响应时间。
可以通过
Nginx
、Apache
之类的Web Server
得到。
3.4 DAU
DAU(Daily Active User)
:日活跃用户数量。常用于反映网站、互联网应用或网络游戏的运营情况。
DAU
通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),与 UV
概念相似。
3.5 MAU
MAU(Month Active User)
:月活跃用户数量,指网站、app
等去重后的月活跃用户数量。
四、总结
那么最后回答一下,什么是高并发?一般认为:如果某个系统的日 PV
在千万级别以上,他就算是一个高并发的系统。