大促流量一来,大模型服务就卡——推理性能压测

简介: 本文揭秘大模型性能测试核心差异:告别传统QPS/RT,聚焦TTFT(首字延迟)、TPOT(逐字间隔)等流式指标。通过真实大促事故(首字延迟从0.8秒飙至15秒),剖析容量规划缺失、KV cache打满、无降级等痛点,并给出阶梯压测、拐点识别、混长文本等实战方法,助你应对AI面试高频题。

AI 测试开发面试高频题:"大模型服务怎么做性能测试?和传统压测有什么区别?"
传统接口压测看 QPS 和 RT,大模型压测看的是"用户等多久看到第一个字、每个字隔多久蹦出来"。指标体系换了,容量模型也换了。这篇用一次大促事故讲清楚。

一、真实事故:首字延迟从 0.8 秒飙到 15 秒

某电商智能导购,平时首字延迟 0.8 秒,体验丝滑。大促零点流量涨了 10 倍,监控曲线立刻变形:TTFT(首 token 延迟)从 0.8 秒飙到 15 秒,用户发完问题盯着空白对话框等十几秒,然后骂骂咧咧关掉;更惨的是部分请求排队超时直接 504,重试又加倍了流量,恶性循环。

事后排查,三个问题叠加:一是没做过容量规划,上线时的并发水位全凭拍脑袋;二是推理服务没设并发限制,高并发下 KV cache 被打满,continuous batching 频繁抢占,单请求生成速度(TPOT)也跟着恶化——不只是等得久,连"出字"都变慢了;三是没有降级预案,模型卡死时连一句"稍后再试"都给不出。

复盘会上性能负责人说了一句大实话:这不是模型不行,是我们从来没按大模型的方式压过它。

二、核心代码:流式压测器 + 阶梯找拐点

第 1 步:采集 LLM 专属指标

大模型压测不能只看总耗时,要拆成 TTFT(等待体验)、TPOT(出字流畅度)、吞吐(系统产能)三组:

import asyncio, time, aiohttp

async def one_request(session, sem, question, out):
    async with sem:
        t0 = time.time(); ttft = None; n = 0
        async with session.post(URL, json={
   "q": question}) as r:
            async for line in r.content:
                if not line.startswith(b"data:"):
                    continue
                n += 1
                if ttft is None:
                    ttft = time.time() - t0          # 首 token 延迟
        total = time.time() - t0
        out.append({
   
            "ttft": ttft, "total": total, "tokens": n,
            "tpot": (total - ttft) / max(n - 1, 1),  # 每 token 间隔
        })

async def run_load(concurrency, n_req, questions):
    out, sem = [], asyncio.Semaphore(concurrency)
    async with aiohttp.ClientSession() as s:
        await asyncio.gather(*[
            one_request(s, sem, questions[i % len(questions)], out)
            for i in range(n_req)])
    return summarize(out)   # P50/P95/P99 + 超时率 + 吞吐(tokens/s)

第 2 步:阶梯加压,找拐点定水位

def capacity_test():
    curve = []
    for c in (1, 5, 10, 20, 40):                 # 阶梯并发
        m = run_until_stable(c)
        curve.append((c, m["ttft_p95"], m["tpot_p95"], m["timeout_rate"]))
    knee = find_knee(curve)                       # TTFT 开始非线性上涨的点
    assert PROD_CONCURRENCY <= knee * 0.7, \
        f"生产水位 {PROD_CONCURRENCY} 超过拐点 {knee} 的 70%,容量不足"

事故服务的拐点在并发 12 左右,而大促实际并发峰值 60——五倍于拐点,不卡才怪。修复动作:限流到拐点 70%、超限请求进排队页、备用小模型兜底短问答,压测报告里这三条都要有对应演练用例。

三、沉淀成方法:LLM 压测指标体系

维度 传统接口 大模型服务 阈值参考
等待体验 RT TTFT P95 对话类 < 3s
流畅度 TPOT P95 < 100ms/字
产能 QPS 吞吐 tokens/s、并发拐点 阶梯压测找
稳定性 错误率 超时率、排队深度、504 率 < 0.1%

三条工程纪律:一是压测流量要混长短文本——全用短问题压出来的容量是假的,长上下文请求吃 KV cache 的速度是短请求的几十倍,用例集要按线上真实长度分布配比;二是压测环境必须含网关和排队层,只压模型裸服务会漏掉网关超时、队列积压这些真实瓶颈;三是每次模型/推理框架升级重跑容量曲线,换个模型版本拐点可能移动 30%,容量结论是有"保质期"的。

四、面试追问,你答得上来吗

  1. 大模型压测和传统压测的本质区别?——答:传统接口响应是"一次性、字节数小、耗时稳定",大模型响应是"流式、耗时随输入输出长度剧烈变化、GPU 资源有状态(KV cache)"。所以指标从 QPS/RT 换成 TTFT/TPOT/吞吐,容量从"扛多少 QPS"换成"拐点并发是多少",而且同样的并发下长短文本表现完全不同,必须按真实分布压。
  2. 怎么定容量水位和扩容线?——答:阶梯压测找拐点(TTFT P95 开始非线性上涨的并发数),生产水位压在拐点 70% 以下;告警线设在拐点 50%,给扩容和限流留反应时间。水位不是越高越好——越过拐点后吞吐不升反降,压得越狠死得越快。
  3. TTFT 正常但 TPOT 恶化,说明什么?——答:说明首 token 前的排队和预填充还扛得住,但解码阶段资源吃紧——典型是 KV cache 不足导致批处理抢占、或显存带宽打满。反过来 TTFT 高 TPOT 正常,则是排队/预填充瓶颈。两个指标分开看,才能定位到推理管线的哪一段。

下一篇预告:《聊着聊着就报错了——上下文溢出与 Token 边界测试》

相关文章
|
28天前
|
人工智能 监控 安全
AI Agent测试实战:如何测试一个会自主决策的软件系统?
AI Agent测试突破传统验证范式,聚焦“目标驱动型系统”的行为质量:需覆盖任务完成度、工具选择、参数准确性、动态执行路径、循环风险、越权调用及故障恢复等维度,构建涵盖行为、安全、性能与可靠性的多层质量工程体系。
|
22天前
|
人工智能 监控 测试技术
Agent 半夜陷入死循环,一夜烧掉上万 token——轨迹测试与熔断
AI测试开发高频题:测Agent≠测接口,核心是验证“决策链是否失控”。本文以深夜烧万元的真实事故切入,详解如何通过轨迹记录、循环检测与三重熔断(步数/Token/时间)保障Agent可靠性,并将“不失控”写入自动化测试用例。
|
23天前
|
JSON 自然语言处理 测试技术
模型编造 API 参数,工具调用连环 500——Function Calling 契约测试
本文详解Function Calling契约测试:针对模型编造非法参数(如虚构枚举值)导致连环400/500错误的问题,提出“工具网关+Pydantic校验+Mock契约测试”三重防线,确保参数合法才调用API,并结构化反馈错误助模型自纠。附三层测试方法与面试高频题解析。
SQL 人工智能 DataWorks
262 0
|
6月前
|
JSON 编解码 前端开发
《QX 游戏商城商品详情页前端性能优化实战》
《QX游戏商城详情页前端性能优化实战》聚焦“强视觉+重交互+高并发”场景,通过分层加载、视频/GIF懒处理、SKU O(1)查找、虚拟滚动、BFF聚合等策略,实现FCP&lt;1.2s、SKU响应&lt;50ms,转化率提升6.8%。
|
2月前
|
人工智能 JSON 监控
AI Agent标准化工作流实战:10套开箱即用完整模板全解析
多数使用者容易混淆AI Agent与普通聊天机器人:聊天机器人仅完成单次问答交互,而AI Agent可以自主串联读取信息、数据核对逻辑、多维度决策、内容起草、系统更新一整条完整业务链路,仅高风险节点暂停等待人工确认。标准化工作流具备可复用、可审计、低幻觉三大优势,核心思路为先梳理完整业务流程,再配套结构化指令,而非临时编写单次Prompt。本文先拆解Agent工作流五大核心组成模块,再分享10套覆盖市场、财务、销售、研发、运营的开箱即用标准化模板,所有模板自带执行步骤、决策规则与输出规范,可直接落地部署。
369 1
|
3月前
|
人工智能 运维 监控
阿里云的 Agent Infra 长什么样
分享了团队在 Agent 工程化领域的完整思考与产品实践,从构建、部署到规模化运行,如何用一套 Agent Infra 覆盖智能体的开发-运行-治理-运维-优化全周期。
|
3月前
|
运维 监控 数据可视化
大模型日志分析与异常诊断:自动定位推理故障、Prompt 问题,高效运维.150
本文系统阐述大模型日志的核心概念、分类(推理/服务/Prompt/异常日志)与结构化格式,详解日志分析三层目标(监控、定位、根因诊断)及异常分级(INFO至FATAL),结合Token关键指标与推理链路断点溯源,提供规则匹配、统计分析和大模型智能诊断三种实战方法,并附Python可视化与自动化诊断代码示例。
491 3
|
4月前
|
人工智能 自然语言处理 IDE
Qoder——来自阿里的Agentic 智能体编程平台,Qoder-Teams-Credits费用300元/月,功能及使用场景全解析
Qoder是阿里云推出的Agentic智能体编程平台,支持自然语言交互、全栈开发与多语言智能问答。集成LLM,Qoder官网:https://t.aliyun.com/U/58ZleE 可理解上下文、自动生成代码/测试、解释逻辑,并提供IDE、CLI、JetBrains插件等多种接入方式,显著提升开发效率与代码质量。
3055 7
|
3月前
|
存储 人工智能 运维
一次 API Key 泄露导致单日异常消耗3.2万美金:中小团队的 AI 调用治理复盘
本文基于脱敏真实事故,聚焦AI生产环境下的技术治理:指出最大风险是“调用边界不可控”,而非模型效果;提出以多维限额、异常自动停用、统一控制层为核心的轻量治理框架,助力团队从应急“救火”走向可持续运营。
389 1