QPS(每秒查询率)

每秒查询率(Query Per Second),每秒的响应请求数,也即是最大吞吐能力。

  • QPS = req/sec = 请求数 / 秒
  • QPS 统计方式【一般使用 http_load 进行统计】
    • QPS = 总请求数 / (进程总数 × 请求时间)
  • QPS:单个进程每秒请求服务器的成功次数

峰值 QPS

  • 每天 80% 的访问集中在 20% 的时间里,这 20% 的时间叫做峰值时间
  • 公式:(总 PV 数 × 80%)/ (每天秒数 × 20%) = 峰值时间每秒请求数据(QPS)

PV(页面浏览量)

访问量即 Page View,即页面浏览量或点击量,用户每次刷新即被计算一次。

单台服务器每天 PV 计算

  • 公式 1(峰值): 每天总 PV = QPS × 3600 × 6
  • 公式 2(normal): 每天总 PV = QPS × 3600 × 8

UV(独立访客)

独立访客即 Unique Visitor,访问您网站的电脑客户端为一个访客,00:00-24:00 内相同的客户端只被计算一次。

服务器数量计算

  • 机器数(峰值): 峰值时间每秒 QPS / 单台机器的 QPS = 需要的机器数
  • 机器数(按 PV): ceil(每天总 PV / 单台服务器每天总 PV)

并发数

并发数 = QPS × 平均响应时间

并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。

吞吐量

吞吐量是指系统在单位时间内处理的请求的数量。

响应时间(RT)

响应时间是指系统对请求作出响应的时间。

计算示例

例子:每天 300w PV 的网站在单台机器上,这台机器需要多少 QPS?

答:(3,000,000 × 0.8)/ (86,400 × 0.2)= 139 (qps)

如果一台机器的 QPS 是 58,需要几台机器?

答:139 / 58 = 3(台)

计算公式详解

系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

  • QPS(TPS): 每秒钟 request/事务 数量
  • 并发数: 系统同时处理的 request/事务数
  • 响应时间: 一般取平均响应时间

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

1
2
3
QPS(TPS)= 并发数 / 平均响应时间
或者
并发数 = QPS × 平均响应时间

实际案例

一个典型的上班签到系统,早上 8 点上班,7 点半到 8 点的 30 分钟的时间里用户会登录签到系统进行签到。公司员工为 1000 人,平均每个员工登录签到系统的时长为 5 分钟。可以用下面的方法计算。

计算步骤:

1
2
3
4
5
6
7
QPS = 1000 / (30 × 60) 事务/秒

平均响应时间 = 5 × 60 秒

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

结论: 一个系统吞吐量通常由 QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了。如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。