一句话定义:QPS(Queries Per Second,每秒查询数)是系统每秒钟处理完的请求数量,衡量“速度”;并发数(Concurrency)是同一时刻正在处理、还没返回的请求数量,衡量“手上同时压着多少活”。
原理:用餐厅打比方
把服务端想成一家面馆。QPS 是每秒端出去几碗面;并发数是后厨此刻正在做、还没上桌的订单数。面馆可以每秒出十碗面,同时手上只有两单在做,因为每碗面 0.2 秒就好了;也可以每秒只出两碗面,手上却压着二十单,因为每碗要煮十秒。两者描述的是完全不同的东西:一个是流速,一个是存量。
它们之间由利特尔法则(Little's Law)联系:平均并发数 ≈ QPS × 平均响应时间。一个接口平均 20 毫秒返回、QPS 500,在途请求大约只有 10 个;另一个接口平均要 1 秒、QPS 也是 500,在途请求就有 500 个。所以“QPS 高”往往说明请求跑得快、周转快,并不代表同时压在系统里的请求多。
为什么并发高也不等于扛得住
并发高有两个来源:一种是真忙,请求排着队等 CPU;另一种是“慢”,请求全都卡在等数据库、等下游 API、等锁上,此时 CPU 可能很闲,但用户已经在骂了。所以看并发数不能只看数字大小,还要看资源饱和度和延迟分布——一个并发 50 但每个请求都在阻塞等待的系统,比并发 200 但都在飞快计算,处境可能更糟。
和相邻概念的区别
| 指标 | 衡量什么 | 单位 | 典型用途 |
|---|---|---|---|
| QPS | 每秒完成多少请求 | 次/秒 | 限流阈值、容量规划 |
| 并发数 | 同一时刻在途请求数 | 个 | 线程池、连接池大小 |
| 响应时间(RT) | 单个请求耗时 | 毫秒/秒 | 体验与瓶颈排查 |
| TPS | 每秒完成的事务数 | 笔/秒 | 含多步操作的业务口径 |
对从业者的实际意义
第一,压测报告别只报一个 QPS 峰值,要写清这个数字是在什么延迟、多少并发、多少错误率下取得的,否则无法比较。第二,限流一般按 QPS 设阈值,而线程池、连接池这类资源按并发数配,两者不能互相替代。第三,做容量估算时,可以先把业务量换算成峰值 QPS,再乘上平均响应时间,得到需要支撑的并发量级;这个换算只是粗估,真实承载力以压测结果为准。
