Skip to content

一、核心要素定义与概念辨析 ​

在性能测试与高并发架构设计中,很多工程师容易混淆 并发用户数、QPS 与 TPS 的概念。理清这三者的边界是设计合理压测场景的前提。

1. QPS(Queries Per Second) ​

  • 定义:每秒钟系统处理的请求数量(以网络 Request 为原子单位)。
  • 场景:通常用于衡量底层接口、反向代理(Nginx)或数据库的瞬时网络吞吐能力。

2. TPS(Transactions Per Second) ​

  • 定义:每秒钟系统完成的事务数量。
  • 场景:以端到端业务场景为度量单位。一个业务事务可能由多个底层 HTTP 请求组合而成(例如:“用户下单”事务包含了查库存、创建订单、扣减余额 3 个接口请求)。

3. 并发数(Concurrency) ​

  • 定义:系统在同一时刻正在并发处理的请求/事务总量。
  • 区别:
    • 广义并发用户数:在线登录系统并浏览页面的用户总数;
    • 狭义并发用户数(并发度):在同一毫秒内真正正在向服务端发送请求的用户数量。

二、利特尔法则(Little's Law)核心公式 ​

在稳定运行的系统中,吞吐量、并发数与响应时间满足利特尔法则:

$$\text{并发数} = \text{TPS} \times \text{平均响应时间}$$

或者变形为:

$$\text{TPS} = \frac{\text{并发数}}{\text{平均响应时间}}$$

典型计算实例: ​

假设某企业早高峰考勤打卡系统:

  • 共有 1200 名员工在早上 07:30 ~ 08:00(30 分钟 = 1800 秒)内完成打卡;
  • 系统单次打卡接口的平均响应时间为 0.5 秒;
  • 业务平均 TPS = $1200 \div 1800 \approx 0.67 \text{ TPS}$;
  • 平均并发数 = $0.67 \times 0.5 \approx 0.34$。 若出现高峰拥堵,80% 的人集中在最后 5 分钟打卡,则峰值 TPS 需重新估算:
  • 峰值 TPS = $(1200 \times 0.8) \div (5 \times 60) = 960 \div 300 = 3.2 \text{ TPS}$。

三、系统性能的三阶段“拐点模型” ​

随着并发压力持续增加,系统的吞吐量与响应时间并非呈线性变化,而是表现为典型的三阶段拐点曲线:

text
TPS / 响应时间
     ▲
     │              [最大吞吐量拐点]
     │                    ┌──────────┐ 
     │                   /            \  [超负荷崩溃区]
     │   [轻负载区]      / [最佳负载区]  \  (TPS 急剧下跌,超时激增)
     │  (线性增长)     /                \
     │               /                   \
     │              /                     \
     └─────────────/───────────────────────\──────► 并发用户数

1. 轻负载区(Light Load Zone) ​

  • 特征:并发用户数较少,系统资源(CPU、内存、I/O)处于低负荷状态。
  • 表现:TPS 随并发数增加呈近似线性增长,平均响应时间保持在极低基线。

2. 最佳性能点与平原区(Heavy Load Zone) ​

  • 特征:并发持续增加,系统某项关键资源(如数据库连接池、CPU 核心使用率)达到瓶颈。
  • 表现:TPS 增长放缓并维持在峰值平台期,响应时间开始显著拉长。此时的并发数通常为系统最佳并发承载量。

3. 崩溃区(Buckle Zone) ​

  • 特征:并发数继续盲目增加,超过系统排队与线程池上限。
  • 表现:频繁的线程上下文切换、内存垃圾回收停顿和连接超时导致系统有效吞吐量(TPS)断崖式下跌,响应时间呈指数级恶化,最终引发服务雪崩。

四、生产容量规划:二八法则推算法 ​

在缺乏历史精细压测数据的情况下,业界通常使用“二八原则”对日常 PV 预估系统所需承载的峰值 TPS:

$$\text{峰值 TPS} = \frac{\text{全天总 PV} \times 80%}{\text{全天运行时间(秒)} \times 20%}$$

举例: ​

假设某内部业务系统预计全天产生 500 万次页面访问(PV):

  • 有效访问时间集中在 8 小时内($8 \times 3600 = 28,800$ 秒);
  • 80% 的流量(400 万 PV)发生在 20% 的时间段(5760 秒)内;
  • 预估峰值 TPS = $4,000,000 \div 5,760 \approx 694 \text{ TPS}$。
  • 在容量规划时,结合 2~3 倍的容灾冗余系数,该系统在上线前应按照 $1500 \sim 2000 \text{ TPS}$ 作为目标基线进行压测验证。

测试开发工程师 · 专注自动化与系统架构 | 邮箱: hansblog@atumsoul.win