“10 万并发”不是性能需求:大促压测必须算清六个参数

简介: 直播电商大促性能需求不能只提“10万并发、P95<500ms”。需明确流量模型(如30秒尖峰)、业务混合比例、支付真实性及降级策略。并发是结果而非输入,压测须还原真实路径、验证交易正确性,并交付可执行的容量账与退让方案。

直播电商项目提出大促性能需求:“帮我测到 10 万并发,接口 P95 不超过 500ms。”

这句话无法直接写压测脚本。10 万人是 30 秒内同时点“抢购”,还是 2 小时在线浏览?他们是否集中购买一个爆品?支付链路是否真实?超过容量后允许排队、限流,还是必须全部成功?不把这些问题说清,测出来的 10 万只是一个仪表盘数字。

image.png

并发数不是流量入口,而是系统里的在途结果

同样每秒进入 1000 个请求,平均响应 100ms 时大约有 100 个在途;响应恶化到 3 秒,在途会膨胀到约 3000。若压测工具采用“一个用户等响应回来再发下一个”的关闭模型,系统越慢,工具发得反而越少,会掩盖最危险的排队阶段。

直播开售更适合按外部到达率还原:预热阶段逐步增长,主播口令后 30 秒形成尖峰,随后回落。浏览、领券、下单、查询和支付按真实比例混合,而不是只压一个最轻的 GET 接口。

image.png

把“10 万人”编译成负载模型

假设 10 万用户在 30 秒内涌入,70% 浏览商品、18% 领取资格、8% 创建订单、4% 查询结果。热点爆品承接 65% 下单,其他商品分散。可以先写成开放到达模型:

export const options = {
   
  scenarios: {
   
    browse: {
   
      executor: 'ramping-arrival-rate',
      startRate: 300,
      timeUnit: '1s',
      preAllocatedVUs: 1200,
      stages: [
        {
    target: 2400, duration: '20s' },
        {
    target: 2400, duration: '30s' },
        {
    target: 600, duration: '40s' }
      ]
    }
  },
  thresholds: {
   
    http_req_failed: ['rate<0.01'],
    http_req_duration: ['p(95)<500', 'p(99)<1200']
  }
};

代码里的速率只是示例,真实数值要从活动预测与历史流量推导。还要为下单、支付使用不同函数和权重,按业务键制造热点;否则一万商品均匀访问会把缓存和数据库锁竞争“洗平”。

压测分五段,才能找到容量拐点

第一段做单请求基线,排除脚本和环境问题;第二段逐步加压,观察延迟何时偏离线性;第三段在目标容量稳定运行,检查内存和队列是否持续积累;第四段超过目标寻找拐点与降级行为;第五段停止高压,验证系统是否在规定时间恢复。

不要只记录 CPU。至少联动客户端等待、网关排队、线程池、连接池、缓存命中、数据库锁、下游耗时、消息积压和业务成功数。某个服务 CPU 只有 50%,连接池已经耗尽,系统一样会崩。

性能报告必须能对业务账

请求成功不代表抢购正确。下单数不能超过可售库存;同一用户不能重复占资格;支付成功必须有订单;被限流用户要收到明确结果;超时后查询能找到最终状态。

def assert_sale_reconciliation(report, repository, stock):
    paid = repository.count_orders(status="PAID")
    reserved = repository.count_orders(status="RESERVED")
    unique_buyers = repository.count_unique_buyers()

    assert paid + reserved <= stock
    assert report["accepted_orders"] == paid + reserved
    assert unique_buyers == paid + reserved
    assert report["unknown_outcomes"] == 0

如果业务允许一人多单,最后一条需按实际规则调整。关键是让性能测试同时验证速度与正确性,不把数据库里悄悄错掉的订单当成吞吐成绩。

image.png

最终要交付的是容量账和退让方案

报告应给出安全容量,而不是极限截图:在既定业务混合下,满足 SLO 且资源留有余量的到达率;扩容需要提前多久;排队到什么长度触发限流;哪些用户或业务优先;故障后多久恢复;目标高峰超过安全容量时需要削减什么。

高级性能课程适合团队补齐建模、诊断与容量规划能力;对于大促、核心交易或复杂微服务,也可以采用企业内训或性能专项外包共同完成业务建模、脚本、观测和演练。无论采用哪种方式,验收都不应停留在“工具打出了多少并发”。

性能测试真正回答的不是系统能不能扛住 10 万,而是用户以什么方式到来时,系统在哪个点开始失控、怎样有序退让、恢复后业务账是否仍然正确。

相关文章
|
19天前
|
SQL 人工智能 算法
AI岗位渗透率升到37.56%:测试岗正在分成“新旧两种人”
2026秋招AI岗位渗透率达37.56%,测试岗正加速分层:传统执行岗溢价消失,懂AI应用、Agent工程、LLM评估的全栈测开人才需求暴增340%,薪资高30%-50%。转型,刻不容缓。
|
2月前
|
设计模式 人工智能 安全
从代码生成到需求交付:一个开发 Skill 的工程化实践
腾讯团队提出AI编程新范式:将需求交付拆解为8阶段工程流程,融合项目知识库、自动化工具与质量门禁。虽代码生成率达94%,但核心突破在于把研发经验转化为可执行规则——AI不再仅写代码,而是在严格约束下完成端到端交付。
|
5天前
|
人工智能 测试技术 Python
AI 接口全是 200,为什么订单还是被多退了一次?
AI系统上线后常因“接口全绿却业务出错”引发事故:如重试导致重复退款、库存误释放。问题根源在于测试止步于接口返回,忽视动作副作用。本文强调:AI测试必须穿透模型输出,校验业务动作的准确性、幂等性与风控逻辑,守住“动作不能出错”的底线。
AI 接口全是 200,为什么订单还是被多退了一次?
|
5天前
|
人工智能 前端开发 测试技术
Playwright ARIA Snapshot:AI 写的页面,怎么测语义没变?
Playwright ARIA Snapshot 通过序列化可访问性树(角色、名称、层级等),填补AI编码时代UI自动化测试的语义缺口——页面“看起来一样”,不等于“能被用户理解与操作”。它专注验证UI的语义契约,与视觉回归、定位器断言、业务逻辑测试协同,构建更健壮的质量防线。
Playwright ARIA Snapshot:AI 写的页面,怎么测语义没变?
|
6天前
|
人工智能 测试技术 定位技术
AI 一次改几十个文件,测试怎么决定回归范围?
AI编码时代,测试不能只看改了多少文件,而应聚焦业务合约影响。本文提出“代码Diff→业务合约→风险等级→测试集”可追溯链路,通过维护`impact-map.yaml`和CI回归选择器,实现精准、可审计的智能回归,让测试成为交付风险的决策者。
|
1天前
|
人工智能 缓存 安全
同一个 AI 测试助手,上午满分、下午降级:模型路由正在制造新质量问题
企业AI多模型路由面临“静默降级”风险:高峰期切轻量模型虽保可用率,却漏检权限越权等高危问题。本文提出任务分级策略、机器可读路由门禁、质量优先的候选筛选及路由级评测体系,强调路由是产品决策而非技术细节——稳定不是总返回结果,而是质量边界永不被悄悄突破。
同一个 AI 测试助手,上午满分、下午降级:模型路由正在制造新质量问题
|
2天前
|
SQL 人工智能 自然语言处理
长上下文代码评审的错觉:模型读完仓库,不等于读懂变更半径
本文揭示长上下文模型在代码评审中的认知盲区:读完仓库不等于读懂变更半径。枚举值修改引发多系统故障,暴露静态理解与真实影响间的鸿沟。提出四层影响图(静态依赖、运行调用、数据血缘、业务责任)和证据驱动的风险评估范式,强调测试工程师需从“写用例”转向“组织变更证据”。
长上下文代码评审的错觉:模型读完仓库,不等于读懂变更半径
|
2天前
|
缓存 NoSQL 关系型数据库
Redis 与 MySQL 一致性实战:一次多发 317 张优惠券的故障链
一次优惠券超发事故揭示缓存与数据库一致性本质:Redis仅作读加速,最终裁决必须由MySQL事务+唯一约束保障。故障源于缓存删除失败+缺乏原子扣减条件,导致317张券超发。
Redis 与 MySQL 一致性实战:一次多发 317 张优惠券的故障链
|
3天前
|
人工智能 安全 前端开发
首字只要 800ms,用户为什么还是等了 7 秒?
首Token延迟≠用户体验!用户真正需要的是可执行答案(如“可退款+原因+下一步”),而非空事件或心跳。性能评测须拆解queue_ms、first_text_ms、useful_ms、complete_ms四阶段,并采用开放到达模型压测,结合答案质量设门禁——让AI性能真正对齐业务决策。
首字只要 800ms,用户为什么还是等了 7 秒?
|
3天前
|
人工智能 供应链 算法
600亿买来的Cursor,被OpenAI一脚踢开——聊聊测试人的AI护城河
OpenAI宣布2026年11月终止向SpaceX旗下Cursor提供模型服务,主因信任缺失。此事警示测试人:工具可被断供,能力才是核心。AI时代,唯有掌握大模型原理、质量工程与落地能力的复合型测试人才不可替代。
600亿买来的Cursor,被OpenAI一脚踢开——聊聊测试人的AI护城河