快速理解 并发量、吞吐量、日活、QPS、TPS、RPS、RT、PV、UV、DAU、GMV

并发与并行

  • 并发:由于CPU数量或核心数量不够,多个任务并不一定是同时进行的,这些任务交替执行(分配不同的CPU时间片,进程或者线程的上下文切换),所以是伪并行。
  • 并行:多个任务可以在同一时刻同时执行,通常需要多个或多核处理器,不需要上下文切换,真正的并行。

并发量(Concurrency)

  • 概念:并发或并行,是程序和运维本身要考虑的问题。而并发量,通常是不考虑程序并发或并行执行,只考虑一个服务端程序单位时间内同时可接受并响应多少个请求,通常以秒为单位,也可乘以86400,以天为单位。
  • 计算方法,通常通过一些压测工具,例如ApiPost压测,或者ab压测来统计,依ab为例:
Window系统:Apache下bin目录有个ab.exe
CentOS系统:yum -y install httpd-tools.x86_64

ab -c 并发数 -n 请求数 网址
ab -c 10 -n 150 127.0.0.1/ 表示对127.0.0.1这个地址,用10个并发一共请求了150次。而不是1500次,
Time taken for tests:   1.249 seconds,说明并发量为 150 / 1.249120 并发,表示系统最多可承载120个并发每秒。

吞吐量(Throughput)

  • 概念:吞吐量是指系统在单位时间能够处理多少个请求,TPS、QPS都是吞吐量的量化指标。
    相比于QPS这些具有清晰定义的书面用语,吞吐量偏向口语化。

日活

  • 概念:每日活跃用户的数量,通常偏向非技术指标用语,这个概念没有清晰的定义,销售运营嘴里的日活,可能是只有一个人1天访问100次,就叫做日活100,也可以说是日活1,中位数日活50,显然意义不大。

QPS(Query Per Second)

  • 概念:每秒查询次数,通常是对读操作的压测指标。服务器在一秒的时间内能处理多少量的请求。和并发量概念差不多,并发量高,就能应对更多的请求。
  • 计算方法,通常通过一些压测工具,例如ApiPost压测,或者ab压测来统计,依ab为例:
ab -c 10 -n 150 127.0.0.1/
其中返回一行数据:
Requests per second:    120.94 [#/sec] (mean)
表示该接口QPS在120左右。

TPS(Transactions Per Second)

  • 概念:每秒处理的事务数目,通常是对写操作的压测指标。这里的事务不是数据库事务,是指服务器接收到请求,再到处理完后响应的过程。TPS表示一秒事件能够完成几次这样的流程。

TPS对比QPS

  • QPS:偏向统计查询性能,一般不涉及数据写操作。
  • TPS:偏向统计写入性能,如插入、更新、删除等。

RPS(Request Per Second)

  • 概念:每秒请求数,和QPS、TPS概念差不多。没有过于清晰的定义,看你怎么用。

RT(Response Time)

  • 概念:响应时间间隔,是指用户发起请求,到接收到请求的时间间隔,越少越好,应当控制在0~150毫秒之间。

PV(Page view)

  • 概念:浏览次数统计,一般以天为单位。范围可以是单个页面,也可以是整个网站,一千个用户一天对该页面访问一万次,那该页面PV就是一万。

UV(Unique Visitor)

  • 概念:唯一访客数。时间单位通常是天,1万个用户一天访问该网站十万次,那么UV是一万。
  • 实现方案:已登录的用户可通过会话区分,未登录的用户可让客户端创建一个唯一标识符当做临时的token用于区分用户。

DAU(Daily Active Use)

  • 概念:日活跃用户数量,来衡量服务的用户粘性以及服务的衰退周期。统计方案各不相同,这要看对活跃的定义,访问一次算活跃,还是在线时长超10分钟算活跃,还是用户完成某项指标算活跃。

GMV(Gross Merchandise Volume)

  • 概念:单位时间内的成交总额。多用于电商行业,一般包含拍下未支付订单金额。

你可能感兴趣的:(面试,后端,服务器,数据库,sql,mysql,nosql,软件工程)