老王在街角开了二十年的拉面馆,最近被美食博主一介绍,生意火爆。可他很快发现,光“客人多”没用——午饭时间瞬间涌进八十人,三个师傅忙到冒烟,出餐反而更慢;下午两三点只有零星客人,两个师傅闲着玩手机。到底雇几个师傅、备多少料才不亏?老王意识到,关键不是“一天来了多少人”,而是“同一时刻有几个人在店里等面”,以及这些人是慢慢来还是一窝蜂来。这个道理正是 AI 推理并发场景设计的核心:把真实世界的“客人到店规律”翻译成对推理服务施加的“请求压力模式”。本文沿着老王排班的思路,讲清并发模型构建、负载模式分类、混合场景设计、性能指标监控、容量规划评估与云原生优化实践六个环节。

岗位关联

掌握并发场景设计,AI 从业者才能用可信的模拟结果回答“系统到底扛得住多少人”,为容量决策、弹性伸缩与成本优化提供依据。

目录
  1. 可视化演示
  2. 并发模型构建
  3. 负载模式分类
  4. 混合场景设计
  5. 性能指标监控
  6. 容量规划评估
  7. 云原生优化实践
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

并发模型构建

老王的面馆要决定雇几个师傅,先得搞清楚“同一时刻有几个客人坐在店里等面”。小学放学时呼啦啦一群孩子冲进来,白领午休一拨一拨来,周末下午懒懒散散几个人。只统计“今天来了五百人”没意义——某个瞬间挤进六十人,三个灶台根本忙不过来。真正决定压力的是“同时在场”的人数。

AI 推理服务的并发模型构建,做的就是同样的事:把真实用户行为翻译成可模拟的并发请求。核心工具是利特尔定律(Little's Law):平均在途请求数 = 请求到达率 × 平均响应时间。到达率就是“每秒进店几人”,响应时间相当于“每位客人从点单到吃完离店的平均时长”。

除了公式,构建并发模型还要定义用户画像:文本生成请求的输入输出 token 长度、图像请求的分辨率,这好比客人点大碗还是小碗;配置思考时间——真实用户看完菜单才下单,模拟器里需要在请求之间加间隔;还要考虑连接复用:长连接像熟客直接落座,短连接像每次重新找座位,反复建连会白白消耗服务端资源。

建好并发模型,老王才知道“高峰期同时二十人”是常态还是偶发,该留几张桌子。接下来他得看清这些客人是怎么一波波涌来的——这正是负载模式的分类。

C=λ×W\displaystyle C = \lambda \times W
通俗理解:任意时刻平均有多少请求“卡在路上”,等于一秒新来几个请求,乘以每个请求平均折腾多久。就像每分钟进店 100 人、每人停留 2 分钟,店里平均就有 200 人。
  1. 到达率 \lambda每秒新进入系统的请求数量,对应客人进店的速度。
    λ\lambda
  2. 平均响应时间 W请求从发出到返回的平均耗时,对应每位客人从点单到吃完面的时长。
    WW
  3. 并发用户数 C两者相乘得到同时“在店里”的请求数,也就是系统需要同时承载的并发量。
    C=λ×WC = \lambda \times W

负载模式分类

客流从来不是一条直线。清晨几位老客慢悠悠喝面汤,中午写字楼白领瞬间占满大堂,午后两点又冷清下来,偶尔一辆旅游大巴停在门口,几十人呼啦涌进来。不同的“人潮形状”对厨房的压力完全不同:同样一小时来两百人,匀速到来和十分钟挤完,前者师傅能从容应对,后者直接击穿堂食座位。

负载模式分类,就是把“人潮形状”归纳成几种标准曲线,压测时按需选用。四种最常用:稳态(恒定并发)、阶梯递增(每隔一段时间加一档)、突发尖峰(瞬间冲高)、波浪(周期性起落)。其中爬坡速度直接决定阶梯模式是否真实,用递增速率公式描述:

各模式各司其职:稳态适合长稳测试,连续跑几小时暴露内存泄漏和连接泄漏;阶梯递增用于找容量拐点——并发加到某档后吞吐不再上升;尖峰用于验证突发场景下系统是否超时雪崩;波浪用于观察自动伸缩能否跟上负载起伏。注意爬坡不能太快,否则系统预热不足会误报“崩了”。

老王根据星期几和节假日排不同的班表,压测同样要按业务日历选模式:大促前测尖峰,日常迭代测波浪,新版本上线前四种全跑一遍。

R=Ppeak−PstartTramp\displaystyle R = \frac{P_{\text{peak}} - P_{\text{start}}}{T_{\text{ramp}}}
通俗理解:爬坡速率就是“每秒多进来几位客人”。加人太快,系统来不及准备就被吓出“假崩溃”;太慢,又浪费压测时间。
  1. 起始并发 P_start加压开始时刻的系统并发数,对应压测起步时店内已有的客人。
    PstartP_{\text{start}}
  2. 峰值并发 P_peak目标达到的最大并发数,对应午市最高峰的客人数。
    PpeakP_{\text{peak}}
  3. 爬坡时长 T_ramp从起始到峰值所用的时间,对应客流从冷清涨到爆满花了多久。
    TrampT_{\text{ramp}}
  4. 递增速率 R每秒增加的并发量,等于峰值减起始再除以时长,衡量加人的快慢。
    R=Ppeak−PstartTrampR = \frac{P_{\text{peak}} - P_{\text{start}}}{T_{\text{ramp}}}

混合场景设计

面馆不是只卖一种面。菜单上有拉面、盖饭、小菜,有的客人还要加蛋加辣。如果演练时只模拟“客人不断点拉面”,师傅们流程再顺,也没法验证蒸饭、炸物、煮面同时开火的真实混乱。

AI 推理服务同样面对混合负载:文本生成吃算力,图像识别吃显存与 IO,语音转写吃带宽,向量检索吃内存。混合场景设计就是按真实业务占比把多种任务叠加到同一场压测里,同时覆盖数据分布——prompt 长度、图片分辨率都要贴近线上,否则测出来的是“实验室结论”。

设计混合场景要定三个要素:权重配比——从线上日志统计各任务占比;时段编排——白天对话多、夜间批处理多,按业务日历切分场景;切换节奏——避免所有任务同一秒爆发造成失真。最可信的做法是流量回放:录制一段线上真实流量,原样打到被测服务上,相当于把面馆一整天的真实点单记录重放一遍。

只有把“拉面、盖饭、小菜”按真实比例混合,压测结果才配得上“贴近生产”四个字。

Ltotal=∑i=1nwi×Li,∑i=1nwi=1\displaystyle L_{\text{total}} = \sum_{i=1}^{n} w_i \times L_i, \quad \sum_{i=1}^{n} w_i = 1
通俗理解:总负载是各道菜按点单比例加总的结果。拉面占五成、盖饭占三成、小菜占两成,厨房压力就是把这三路客人的需求按比例叠在一起。
  1. 单项负载 L_i第 i 类任务(如文本生成)自身的请求负载,对应某一道菜的点单量。
    LiL_i
  2. 权重 w_i该类任务在总业务中的占比,对应这道菜在菜单里的销售份额。
    wiw_i
  3. 加权求和把各类负载按权重逐项累加,得到混合后的总负载。
    ∑i=1nwi×Li\sum_{i=1}^{n} w_i \times L_i
  4. 权重归一化所有权重加起来等于 1,保证混合比例完整覆盖全部业务。
    ∑i=1nwi=1\sum_{i=1}^{n} w_i = 1

性能指标监控

老王店门口挂了四块仪表:一小时出了多少碗面(吞吐量)、客人排队到上桌多久(时延)、灶台和师傅忙不忙(利用率)、有没有做糊或漏做的单(错误率)。这四块表必须一起看——光看“出餐多”可能师傅已经累到极限,下一分钟就崩溃。

AI 推理压测对应四个核心指标:吞吐量(QPS、每秒 token 数)、时延(P50/P95/P99)、GPU 与内存利用率、错误率(超时/5xx)。排队论用利用率描述系统忙闲:利用率 = 到达率 ÷ 服务率。

平均时延极具欺骗性:100 个请求里 99 个 10ms、1 个 5 秒,平均约 60ms,看起来不错,但那个等了 5 秒的用户早就流失了。所以必须看 P99——最慢 1% 请求的边界——以及吞吐量-时延曲线上的拐点。资源利用率与错误率要配合看:利用率逼近 100% 时错误率往往开始抬头,说明系统进入过载区。

老王盯着平均出餐时间会错过那碗迟到的面;盯 P99 才能发现某桌等了半小时。尾部时延才是口碑崩坏的开始。

U=λμ\displaystyle U = \frac{\lambda}{\mu}
通俗理解:利用率是“师傅忙的时间占比”。到店速度快、出餐速度慢,师傅就整天闲不下来;U 接近 1 时,系统已经快要转不动了。
  1. 到达率 \lambda每秒新到的请求数,对应进店客流的速率。
    λ\lambda
  2. 服务率 \mu系统每秒最多能处理的请求数,对应师傅出餐的最快速度。
    μ\mu
  3. 利用率 U两者比值,U=0.7 表示七成时间在忙;U 越接近 1,排队越长,时延越差。
    U=λμU = \frac{\lambda}{\mu}

容量规划评估

老王最怕两个极端:师傅雇太多,闲坐着还发工资;雇太少,客流一大客人扭头就走。他需要知道店面到底“最多能同时接待多少人”,还要留出安全垫——按峰值的 1.2 倍备料、备人。

容量规划评估以压测基线为起点:基线测试得到当前配置下的最大吞吐与拐点时延;再按业务预测峰值乘冗余系数确定规划容量。

拐点识别是核心动作:阶梯递增压测时,吞吐量不再随并发上升甚至开始下降,同时时延猛增,这个点就是拐点,生产容量应规划在拐点之下留足余量。成本平衡同样重要:GPU 资源昂贵,冗余太少违反 SLA,冗余太多浪费预算,常用“成本—可用性”权衡曲线决定冗余率,并在关键业务上靠多副本和故障转移对冲风险。

容量规划就像备面粉:按周末客流上限多备两成,既不用天天倒陈面,也不会在旅行团到来时只能道歉。

Pplan=Ppeak×(1+m)\displaystyle P_{\text{plan}} = P_{\text{peak}} \times (1 + m)
通俗理解:规划容量 = 预测最忙那天的人数 ×(1 + 安全余量)。余量是给突发、故障和业务增长买的“保险”。
  1. 业务峰值 P_peak预测的最高峰吞吐或并发数,对应节假日最忙一天的客流。
    PpeakP_{\text{peak}}
  2. 冗余率 m安全余量,通常取 0.2~0.5,覆盖突发尖峰、故障转移与未来增长。
    mm
  3. 规划容量 P_plan需要申购或配置的资源量,即峰值乘以放大系数。
    Pplan=Ppeak×(1+m)P_{\text{plan}} = P_{\text{peak}} \times (1 + m)

云原生优化实践

理想中的面馆,是客流少时两个师傅歇着,午市自动“打电话”叫来临时工,高峰实在挤不下时让客人先取号排队,而不是几十人堵在柜台——那样反而更慢。云原生架构正是给 AI 推理服务装上这套“随客流呼吸”的能力。

结合压测得到的基线与拐点,云上可落地四件事:弹性扩缩容(HPA 按吞吐或 GPU 利用率自动加减副本)、队列削峰(瞬时超量请求先缓冲进队列,避免打爆服务)、缓存加速(复用 prompt 前缀和常用结果,减少重复算力)、运维监控(Prometheus 采集 + 告警)。副本数的计算依赖压测基线:

弹性伸缩要配冷却时间,防止客流一抖、临时工刚上岗就被遣返,形成伸缩抖动;队列削峰要盯积压深度与超时,队列太深等于换了种方式排队,用户照样等不起;缓存看命中率,命中低时缓存反而白占内存;监控则把吞吐、时延、利用率、错误率四块仪表接入告警,拐点附近自动报警。这一切配置的“标尺”都来自压测——没有基线,阈值就是拍脑袋。

老王最后发现,机器和师傅一样:不该全天候满编,而该跟着客流涨落。压测得到的并发曲线,就是这套呼吸节奏的乐谱。

Nreplica=⌈LdemandCinstance⌉\displaystyle N_{\text{replica}} = \left\lceil \frac{L_{\text{demand}}}{C_{\text{instance}}} \right\rceil
通俗理解:需要的师傅数 = 当前客人总量 ÷ 每位师傅能同时招呼的人数,向上取整。高峰期叫五个临时工,低谷期两个就够。
  1. 需求负载 L_demand当前总吞吐需求(QPS 或 token 速率),对应此刻店里的客人总量。
    LdemandL_{\text{demand}}
  2. 单实例能力 C_instance一个副本能扛的负载,由压测基线的单机吞吐得到,对应一位师傅的接待上限。
    CinstanceC_{\text{instance}}
  3. 向上取整 N_replica除法结果为小数时向上取整,保证能力不缺口,对应“哪怕多雇半个人也不够,必须雇整一个”。
    ⌈LdemandCinstance⌉\left\lceil \frac{L_{\text{demand}}}{C_{\text{instance}}} \right\rceil

AI 应用场景

大模型API上线前压测

阶段:性能测试 / 容量规划

解决的问题:新版本大模型推理服务上线前,团队只靠估算“大概能扛 500 并发”,结果线上高峰直接超时。传统凭经验的做法没有真实负载曲线支撑,无法回答 P99 是否达标、该配几个副本。

具体案例:某智能客服团队发布新模型前,按“尖峰 + 混合场景”回放真实对话日志,发现 300 并发时 P99 从 800ms 飙到 3s。据此他们把部署副本从 2 个扩到 5 个,并依据 N=ceil(L/C) 配置 HPA 阈值,上线后大促峰值 P99 稳定在 1.2s 内。

电商大促推荐服务容量规划

阶段:容量规划 / 资源管理

解决的问题:双十一前需要确定 GPU 资源预算,买多了浪费、买少了宕机。传统的“去年峰值乘 2”缺少压测数据支撑,容易超卖或不足。

具体案例:电商平台基于去年大促流量构建“波浪 + 尖峰”混合负载场景,压测得到推荐服务的吞吐-时延拐点,再按峰值 1.3 倍冗余申购资源。大促当天下单量破纪录,但 P99 时延始终低于 SLA 红线。

云上自动伸缩策略调优

阶段:运维实践 / 弹性管理

解决的问题:HPA 阈值纯靠经验设置,要么扩容滞后导致超时,要么频繁伸缩造成抖动。缺少压测基线的伸缩策略等于盲人摸象。

具体案例:某平台团队用一周线上负载数据回放做压测,验证了四种负载模式下的扩缩容行为,把副本数公式落地为控制器逻辑,冷却时间设为 90 秒,扩缩容响应从 5 分钟降到 40 秒,GPU 利用率提升约 20%。

Python 演示

python82 行
import mathimport randomimport threadingimport time  class InferService:    """模拟AI推理服务, 每个worker相当于一个拉面师傅"""     def __init__(self, workers=3):        self.workers = workers        self.queue = []        self.lock = threading.Lock()        self.done_count = 0        self.latency_list = []     def _infer(self, task_size):        time.sleep(0.05 * task_size * random.uniform(0.8, 1.2))     def _cook(self):        while True:            with self.lock:                if not self.queue:                    continue                body = self.queue.pop(0)            start = time.time()            self._infer(body[1])            cost = time.time() - start            with self.lock:                self.latency_list.append(cost)                self.done_count += 1     def start_workers(self):        for _ in range(self.workers):            threading.Thread(target=self._cook, daemon=True).start()     def run(self, load_func, seconds=8, qps_base=8):        self.start_workers()        end = time.time() + seconds        tick = 0        while time.time() < end:            ratio = tick / seconds            qps = load_func(ratio) * qps_base            n = max(1, int(qps * 0.25))            for _ in range(n):                self.queue.append((tick, random.randint(1, 4)))            tick += 1            time.sleep(0.25)        time.sleep(1.5)  def spike(ratio):    if ratio < 0.3:        return 0.2 + 2.5 * ratio    if ratio < 0.5:        return 1.0    return max(0.1, 1.0 - 2.0 * (ratio - 0.5))  def wave(ratio):    return 0.5 + 0.4 * math.sin(ratio * math.pi * 4)  def report(name, svc):    with svc.lock:        total = svc.done_count        good = len([x for x in svc.latency_list if x < 0.3])    pct = 100.0 * good / total if total else 0.0    print("%s: 完成%d单, 合格率%.1f%%" % (name, total, pct))  def main():    svc1 = InferService(workers=3)    svc1.run(spike)    report("尖峰客流", svc1)    svc2 = InferService(workers=3)    svc2.run(wave)    report("波动客流", svc2)  if __name__ == "__main__":    main()
目的:用三个“拉面师傅”线程模拟一个三副本 AI 推理服务,分别灌入尖峰和波浪两种负载模式,统计完成单数与低时延合格率,直观对比不同并发剧本下的服务表现。
  1. self.done_count = 0完成请求计数器,对应师傅做完的面碗数,读取时用锁保护。
  2. time.sleep(0.05 * task_size * random.uniform(0.8, 1.2))推理耗时与任务大小成正比且带随机扰动,还原真实计算波动。
  3. self.queue.pop(0)师傅从队列取单,模拟服务端请求排队,队列越长等待越久。
  4. with self.lock:加锁保护共享的队列和计数,避免多线程并发写坏数据。
  5. qps = load_func(ratio) * qps_base由负载模式函数算出当前时刻请求速率,负载模式不同,灌入节奏就不同。
  6. threading.Thread(target=self._cook, daemon=True).start()启动师傅线程,对应 Kubernetes 里的副本实例。
  7. good = len([x for x in svc.latency_list if x < 0.3])统计时延低于 0.3s 的合格请求,对应“出餐是否在承诺时间内”。

常见误区

误区压测时以为“系统有 10 万注册用户,并发就按 10 万来测”,或者把 DAU、在线人数直接当成并发数写进测试计划。

正解并发数指“同一时刻在途请求数”,由利特尔定律 C=λ×W 决定。1 万人在线、每人每 10 分钟才点一次,与 1000 人同时疯狂下单,对系统的压力完全不同。面馆里坐满 50 人是并发,门口路过的 500 人不是。

为何常见:大家习惯用“用户规模”衡量系统,而“同时在途请求”是个看不见的隐含量,需要公式推演才能得到,直觉上容易混淆。

误区压测就是从头到尾每秒固定发几百个请求,一路打到报错为止,认为这样最“简单粗暴有效”。

正解真实业务有波峰波谷、突发事件和周期性起伏,恒定并发只能覆盖稳态场景。正确做法是按业务日历选择模式:稳态测长稳、阶梯找拐点、尖峰验突发、波浪验伸缩,必要时混合编排。

为何常见:恒定并发最容易实现、结果最好解读,初学者天然倾向选简单的写法,却忽略了它回答不了“突发会不会崩”这类关键问题。

误区压测报告显示“平均响应时间 50ms”,就觉得系统又快又稳,直接签字通过。

正解平均值会被大多数快请求拉低,掩盖尾部灾难。必须同时看 P50/P95/P99 多分位时延,P99 高说明少量请求严重超时——就像平均出餐三分钟,但最慢那碗面等了半小时,口碑照样崩。

为何常见:平均数是统计课上最先学会的概念,理解成本低;分位数需要额外解释“最慢 1%”的语义,容易被跳过。

误区把并发一路加到 5000、8000,测到系统崩了才觉得“测试有价值”。

正解压测目标不是把系统打挂,而是贴近真实业务找容量边界。远超真实场景的负载只会产生失真数据,误导容量规划——老王不会为了考验厨房,故意让 500 人同时挤进只能坐 50 人的小店。

为何常见:很多人把压测当成“极限挑战”,觉得数字越大越专业,忽视了并发场景设计的本质是还原业务、服务决策。

误区单接口压测 2000 QPS 不报错,就把“容量达标”写进报告,上线后不再关注。

正解一次通过的压测只覆盖了当时的场景组合。混合场景、数据分布、时段编排都变,结论就作废;容量还会随版本迭代和业务增长漂移。需要建立常态化回归压测,配合监控告警持续验证,才能保证“厨房随时扛得住”。

为何常见:压测成本高、周期长,团队倾向于“测一次管半年”,忽略了负载是动态的、系统是演进的。

面试题

Q1. 根据利特尔定律 C=λ×W,并发用户数等于什么?

单选题 · easy

  • A.服务器实例数量
  • B.在线登录用户数
  • C.到达率乘响应时间← 正确答案
  • D.请求失败总数

答案:C。并发数不是在线人数,而是“同时在途请求”的量。利特尔定律 C=λ×W:每分钟进店 100 人(λ)、每人停留 2 分钟(W),店里平均就有 200 人。A 是资源数量,B 是用户规模,D 是错误统计,都与同时在场请求量无关。

Q2. 突发尖峰负载模式最适合验证哪类场景?

单选题 · easy

  • A.热点事件涌入← 正确答案
  • B.平稳运营日常
  • C.缓慢增长过程
  • D.周期性小起伏

答案:A。尖峰模式模拟“旅游大巴突然停在门口”的瞬间冲击,适合验证大促秒杀、热点新闻等突发流量下系统是否超时雪崩,也能检验弹性扩容是否来得及。平稳日常用稳态,缓慢增长用阶梯,周期性起伏用波浪。

Q3. 利用率 U=λ/μ 接近 1 时,系统处于什么状态?

单选题 · easy

  • A.十分空闲无事
  • B.请求量非常少
  • C.服务速度极快
  • D.接近饱和临界← 正确答案

答案:D。U 接近 1 表示到达率逼近服务率,师傅们一刻不停但客人仍在排队,时延会急剧劣化,系统接近饱和。此时必须扩容或限流。A、B 是低利用率表现,C 与公式无关。

Q4. 稳态负载模式的主要用途是什么?

单选题 · mid

  • A.验证系统长期稳定性← 正确答案
  • B.检验瞬间抗压能力
  • C.测试自动扩缩容速度
  • D.排查代码逻辑漏洞

答案:A。稳态模式保持恒定并发长时间运行,用于暴露内存泄漏、连接泄漏、缓存失效累积等“慢性病”。瞬间抗压对应尖峰模式,自动伸缩跟随性对应波浪模式,代码漏洞排查是单元测试和代码评审的范畴。

Q5. P99 时延很高而平均时延很低,最可能说明什么?

单选题 · mid

  • A.系统整体非常健康
  • B.并发用户数太少
  • C.少数请求严重超时← 正确答案
  • D.网络带宽足够大

答案:C。平均时延被大多数快请求“平均”掉了,P99 关注最慢 1% 请求的边界。对应面馆:平均出餐三分钟,但某碗面等了半小时,只有看 P99 才能发现。并发太少通常时延更低,带宽大与超时无直接关系。

Q6. 弹性副本数公式 N=ceil(L/C) 中,C 代表什么?

单选题 · mid

  • A.单个副本处理能力← 正确答案
  • B.服务器磁盘剩余量
  • C.网络连接超时阈值
  • D.当前业务总需求负载

答案:A。C 是 single instance 能力,即一个副本能扛的负载,由压测基线得到;L 是当前总需求负载,两者相除向上取整得到副本数。磁盘、超时、总负载都是干扰项,注意别把 L 和 C 的位置记反。

Q7. 波浪形负载最适合模拟哪类业务?

单选题 · mid

  • A.持续三天满负荷
  • B.突发热点新闻事件
  • C.电商日常访问节奏← 正确答案
  • D.数据库主备切换

答案:C。波浪模式用周期性起落模拟一天中真实业务的高低起伏,比如电商白天高、凌晨低。满负荷对应稳态,热点新闻对应尖峰,主备切换属于故障演练,与负载形状无关。

Q8. 混合场景设计通常需要考虑哪些因素?

多选题 · hard

  • A.任务类型权重配比← 正确答案
  • B.测试数据分布设计← 正确答案
  • C.服务器品牌型号选择
  • D.负载时段编排切换← 正确答案

答案:ABD。混合场景 = 任务权重 + 数据分布 + 时段编排,三者决定流量是否贴近真实业务。服务器品牌与场景设计无关。就像面馆排班要定各菜品占比、食材配比和时段安排,而不是纠结用哪口锅。

Q9. 做容量规划时,预留冗余主要为了应对什么?

多选题 · hard

  • A.未来业务持续增长← 正确答案
  • B.峰值波动的不可预测← 正确答案
  • C.故障导致的容量损失← 正确答案
  • D.员工薪资成本上涨

答案:ABC。冗余是给不确定性买保险:业务增长会吃掉余量,突发尖峰可能超出预期,单节点故障会损失部分容量,所以规划容量 = 峰值 ×(1 + 冗余率)。薪资是成本项,不是容量风险项。

Q10. 压测报告得出“系统容量达标”结论前,应该确认哪些条件?

多选题 · extreme

  • A.覆盖典型与极端混合场景← 正确答案
  • B.考察P50到P99多分位时延← 正确答案
  • C.资源利用率仍留有余量← 正确答案
  • D.所有并发请求计数为零

答案:ABC。可信结论必须基于混合场景而非单一接口;时延要覆盖多分位而不是只看平均;资源利用率要低于拐点才有安全垫。D 项“请求为零”无意义。类比:说“厨房扛得住”,至少得证明高峰时段也扛得住、最慢那碗面也合格、师傅还留有余力。