高并发性能YUEXIAN INSIGHTS

高并发容量规划,先把 QPS、在途请求和业务峰值算在同一口径下

解释 QPS、在线用户、并发请求与响应时间的关系,给出从业务流量拆分、依赖放大到容量拐点和冗余预算的实施与验收方法。

本文目录
先看结论

容量结论必须同时写明请求结构、成功率和延迟条件

QPS 表示单位时间内的请求量,并发请求表示同一时刻尚未完成的请求,在线用户则不等于持续请求的用户。在边界一致且处于稳定状态时,可用平均在途请求数约等于平均到达率乘平均停留时间检查数量级;它不能预测活动瞬时峰值,也不能用 P99 直接代替平均值。容量规划应先拆分读写比例、热点和依赖调用,再通过逐级加压测出满足业务延迟与正确性要求的可持续负载,并加入故障、扩容等待和增长余量。

先决定容量评估的四个口径

判断项应记录的条件误判风险
业务流量按登录、浏览、提交、查询结果分别记录峰值到达率和读写比例把总日活或页面访问量当成某个接口的峰值 QPS
处理容量在约定数据量、错误率与延迟下测出稳定处理量只写最高发送量,超时和失败也计入能力
依赖放大每次业务操作对应数据库、缓存和外部调用次数入口容量够用,下游先被重复查询或重试压垮
容量余量考虑节点失效、发布替换、预热和实例就绪时间正常峰值刚好跑满,故障后没有可用余地
01

适用边界:从关键交易或查询入口开始

这套方法适用于 API、企业业务系统、小程序后台和有明确请求路径的 Web 服务。视频传输、长连接、批量分析与在线推理还需要带宽、连接寿命或任务队列等专门模型,不能只按 QPS 报价。

容量评估首先是约定业务体验。比如列表打开、提交订单和后台导出可以有不同等待预算,支付完成还需看最终状态。将这些动作混成一个平均响应时间,会掩盖最需要保障的路径。没有生产历史时,应把估算标为假设,活动后用真实曲线修订。

一次业务动作和一次接口调用不是同一个计量单位。评估表应同时保留各路径的请求放大比例,并注明哪些动作会被浏览器、网关或客户端重试;如果一次操作跨越异步阶段,应分别评估受理能力与最终处理能力,让不同阶段的容量结论能够对应。

  • 先列出会影响收入、履约或生产的三到五条路径。
  • 为每条路径写明数据量、完成标准、可接受等待与失败边界。
02

区分 QPS、并发请求与在线人数

一个在线用户可能长时间阅读,也可能连续触发多个接口。前端一次动作还可能并行请求配置、库存和优惠,因此用户数与后端并发之间不存在通用固定倍数。

稳定系统中,请求在途数量会同时受到达率和停留时间影响。假设到达率不变而平均处理变慢,在途请求就会增加,这些请求又会占用内存、连接和工作槽位。用同一入口、同一时间窗、同一单位做数量级核对;不要把浏览器思考时间计入数据库连接占用时间,也不要用瞬时值验证平均关系。

  • 分别记录在线用户、业务动作数、接口请求数与在途请求数。
  • 时间统一成秒,注明统计窗口以及是否包含失败与重试。
03

把业务动作拆成负载组合与依赖预算

真实高峰不是每个接口流量相同。活动页读取可能集中在一个商品,提交写入可能争抢同一库存,后台报表可能与交易共享数据库;总 QPS 相同也会产生完全不同的资源压力。

先按业务动作估算接口比例,再展开每条路径对存储与外部依赖的访问次数。读缓存命中和未命中要分开建模,外部限额也要记录。一次提交若包含多条查询与一次重试,其数据库负载应单独计算;测试中的均匀随机数据不能替代真实热点。

  • 保留常规、活动、冷缓存和后台任务叠加四类负载组合。
  • 把单次动作的数据库查询数、外部调用数和大对象大小列入预算。
04

通过逐级负载寻找可持续容量和拐点

固定并发模型在系统变慢时可能自动减少新请求。若目标是验证持续到达的活动流量,应使用与到达率匹配的开放模型,并检查负载发生器是否真的发出了计划请求。

k6 官方区分开放模型与闭合模型,constant-arrival-rate 调度的是业务迭代而非天然等于 HTTP QPS:一轮含几个请求,就要结合脚本计算。逐级加压时同时看成功完成量、延迟、在途请求与依赖等待,出现吞吐趋平而排队持续增长时,继续增加入口流量通常只会恶化体验。

  • 每级保持足够时间观察缓存、连接与队列进入稳定状态。
  • 记录计划迭代、实际请求、未启动迭代和成功业务操作,避免错算容量。
05

实施步骤:建立基线后再提出扩容方案

第一步收集业务峰值和配置;第二步复现代表性数据与流量;第三步测出各负载组合的拐点;第四步验证一个优化假设;第五步在节点或依赖异常时重测容量,最后形成容量表。

余量应覆盖扩容生效前的增长、发布替换和故障损失,取多少由业务风险与实测结果决定。新实例不一定立即可用,它可能需要启动、连接建立和热点预热。应用多副本还会扩大数据库连接总数,所以扩容方案必须列出共享依赖的上限和相应费用。

  • 容量表标明代码版本、数据规模、实例规格、负载结构与可持续时长。
  • 同时给出优化、扩容和入口保护触发条件以及负责人。
06

验收重点:证明业务完成量与故障余量

验收报告应能回答在约定流量下用户是否及时完成操作,系统是否保持正确,以及失去部分容量后多久恢复。一个脱离环境和业务结构的“支持多少并发”不能作为交付结论。

比较优化前后时固定负载模型和数据,保留未达标阶段与发生器限制。除正常峰值外,再验收突增、持续高峰和单节点退出。计算能力时排除无效请求与失败,但保留这些流量用于解释资源消耗;最终把无法测试的第三方和生产差异写为条件。

容量表还应列出有效期:数据增长到什么范围、访问比例怎样改变、哪个依赖升级后需要重新测试。采购容量时把性能目标写成带条件的业务结果,避免供应商和使用方分别按不同请求口径验收;实测未达到目标的负载阶段也应保留,供后续优化判断。

  • 检查高峰结束后排队是否清空,连接和内存是否回到稳定区间。
  • 复核限流、重试和自动扩容不会相互抵消或放大压力。

需求讨论中的问题

十万用户同时在线需要多少台服务器?

不能只从在线人数决定。先确认每秒执行哪些动作、一次动作包含多少请求、真实数据与热点分布,以及目标延迟,再测每个资源组合的可持续业务完成量。

并发数等于 QPS 乘响应时间吗?

在统计边界一致的稳定系统中,平均在途请求数可用平均到达率乘平均停留时间做核对。瞬时峰值、非稳定积压、在线人数和 P99 延迟不能直接套这个关系。

容量测完可以一直使用吗?

增加业务步骤、扩大数据、变更依赖、调整实例规格或改变热点都会使结论过期。容量表应写明适用版本与复测触发条件,尤其在大活动前重新验证。

带走这份清单

容量规划交付验收清单

可逐项勾选,辅助本次阅读;刷新页面后不保留。

参考资料

技术概念可进一步阅读以下资料;文中的业务场景与实施清单用于方案讨论。

  1. Grafana k6:Open and closed models

    核验固定并发与开放到达率模型的区别,以及系统变慢对闭合模型实际到达率的影响。

  2. Grafana k6:Constant arrival rate

    核验 rate 对应迭代启动速率;文中容量表与余量评估是需结合项目实测的实施建议。

  3. MIT OpenCourseWare:Elements from Queueing Theory

    核验 Little 定律 L = λW 的平均数量与平均停留时间关系,并明确统计边界和稳定状态条件。

#容量规划#QPS#并发请求#性能预算
从阅读,到行动

需要评估现有系统的性能瓶颈?

提供关键业务路径、真实峰值、服务器与数据库配置,以及现有压测或故障记录,月弦科技可据此梳理优化顺序、实施范围和可验证的验收条件。