← 每日面试题 学习看板

单机压测到300QPS,10台就能抗住3000QPS吗?

面试题/02架构设计题/04高可用/单机压测到300QPS,10台就能抗住3000QPS吗?.md

面试记录 2026-10-08

题目:单机压测到 300QPS,10 台就能抗住 3000QPS 吗?

难度:medium

标签:arch/high-availability, architecture/high-availability, difficulty/medium

评分:⭐⭐⭐☆☆(3/5)

我的回答

Q7 是 300QPS 单台机的话,它是自身的压力上限。但是 10 台进行分布的时候,你并不能保证每一台都分配到 300,有可能一台分配到 600,其他台其他几台分配到其他的,会出现分配不均的问题。所以并不能完全信任 10 台就能扛住 3000,需要有一定的富余保留,一般在 30%、20%~30% 这样,做一个富余保留,确保机器能扛得住压力。另外在前侧做负载均衡的时候,尽可能的选择更合理的分配算法。不要,尽量不要选择完全随机的。可能选择压力低的去进行分配,或者是轮询,或者是高性能的机器选择权重轮询,有些高性能的分多点,有些低性能的分少点。但是你无法完全的保证每台的压力都是均分的,QPS 没有那么稳定。

点评

优点:核心结论"不能完全信任、需要富余"抓准;说出流量倾斜问题(一台 600、其他少);提到负载均衡算法(轮询/加权/最小压力);有容量冗余意识(20-30% 富余)。

不足:未提长尾流量与突发(3000 不是稳态峰值,可能是毛刺);未提依赖资源瓶颈(DB/缓存/第三方接口可能先挂);未提容量规划方法论(压测 → 峰值 → 水位 → 冗余);未量化 30% 富余背后的原因(GC/抖动/长尾请求/慢查询);未提限流降级兜底;未提水平扩展的隐性成本(一致性、锁、状态同步)。

补充:容量规划黄金公式——真实需求 = 峰值 QPS × (1 + 冗余系数) ÷ 单机稳态 QPS;一般预留 50% 冗余(非 20-30%);负载均衡策略对比:RR/加权 RR/IP Hash/一致性 Hash/最少连接/响应时间权重。

完整讲解

第一部分:知识重点剖析

核心考点定位:考察容量规划的量化思维——不是"能不能扛",而是"凭什么说能扛"。

知识点拆解:

  1. 单机 300 QPS 是"压测上限",不是"稳态容量":
  1. 流量倾斜问题(用户提到,正确):
  1. 依赖资源瓶颈(用户遗漏):
  1. 容量规划黄金公式:
  1. 负载均衡策略对比:
策略特点适用场景
轮询 RR均分、简单机器同质
加权 RR按性能权重机器异构
IP Hash同 IP 固定机器需要会话保持
一致性 Hash扩缩容只影响小部分缓存集群
最少连接按实时负载分配请求耗时不均
响应时间权重按历史响应时间智能调度
  1. 限流降级兜底(用户遗漏):
按「稳态 vs 上限 → 流量倾斜 → 依赖瓶颈 → 容量公式 → 兜底策略」递进。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. 3000 QPS 的峰值是怎么预估的?如果预估错了怎么办?
  1. 单机 300 QPS 的压测是稳态压测还是极限压测?如何判定?
  1. 如果 10 台机器扛不住 3000 QPS,除了加机器还有什么方案?

第三部分:面试者参考回答(300-600 字口语化)

面试官您好,我的结论是:10 台扛 3000 QPS 风险很大,不能直接上线,需要按容量规划公式重新算。

第一,单机 300 QPS 是压测上限,不是稳态容量。压测上限是 CPU 95%、GC 频繁、响应时间暴涨时的极限水位,不能作为规划基准。稳态水位应该是 CPU 50-60%,也就是单机实际能稳态跑 150 QPS 左右。

第二,流量倾斜是真实存在的。

第三,容量规划黄金公式:机器数 = (峰值 QPS × 冗余系数) ÷ 单机稳态 QPS。

第四,依赖资源瓶颈常常先挂。

第五,负载均衡策略选择(我举的点):

第六,限流降级兜底:

总结:容量规划是"稳态水位 × 冗余系数",不是"压测上限 × 机器数"。生产实践是压测 → 峰值预估 → 冗余计算 → 灰度验证 → 限流降级兜底五步走,没有兜底就上线是拿业务冒险。