Little 定律是什么
Little 定律指出:稳态系统中平均并发数等于到达率乘以平均停留时间,即 L 等于 λ 乘 W。它是容量换算的基础工具——已知每秒请求数与平均响应时间,就能估算同时在处理中的请求数量;反过来,也能从线程池容量推算可支撑的吞吐上限。
怎么用在架构分析上
把系统看成一层层稳态队列,每层的并发需求都由该层的到达率与停留时间决定。如果某层的并发需求超过线程池或连接池容量,请求就会排队,停留时间被推高,上层观察到的并发随之进一步上升。这正是过载时延迟恶化的机制:不是计算变慢,而是等待在累积。
换算
换算
L = λ × W
# L 并发数,λ 到达率(每秒),W 平均停留时间(秒)
例:λ=1000 QPS,W=50ms -> L ≈ 50 并发
反推:连接池 100,W=50ms -> 理论上限约 2000 QPS
# 超过上限后多出的请求排队,W 被推高,吞吐不再增长换算示例
| 场景 | 到达率 | 平均耗时 | 并发 |
|---|---|---|---|
| 网关入口 | 2000 QPS | 20ms | 40 |
| 订单服务 | 800 QPS | 120ms | 96 |
| 报表导出 | 20 QPS | 3s | 60 |
| 数据库写路径 | 500 QPS | 60ms | 30 |
适用前提
| 稳态假设 | 输入与输出速率基本一致,队列未持续增长 |
|---|---|
| 单位一致 | 响应时间与到达率的时间单位必须统一 |
| 峰值差异 | 突发流量下瞬时并发可远高于平均值 |
| 边界 | 不适用于排队尚未建立的瞬时状态 |
最容易误用的地方
常见误用是把每秒请求数直接当成并发数来配线程池,忽略了响应时间的量级差异:同样是每秒一千次调用,响应时间从十毫秒涨到一百毫秒,所需并发就从十涨到一百。另一个误用是拿改造后的响应时间套用旧的容量结论,反压参数、缓存命中率或下游变慢都会让停留时间变化,容量结论必须跟着重算。
定律描述稳态;突发流量下瞬时并发可远高于平均值,容量设计要看峰值而非均值,或者用排队模型估算峰值时刻的堆积量。