列举并解释衡量系统性能的核心指标,并给出可接受的参考范围

解读

面试官想通过这道题确认三件事:

  1. 你是否能把“性能”拆成可量化、可对比、可验收的指标,而不是泛泛地说“快”或“慢”;
  2. 你是否清楚国内主流互联网/金融/政企场景的 SLA 底线,给出的区间不能照搬国外论文,而要符合国内生产环境;
  3. 你是否能把指标、测量方法与业务场景对应起来,体现“性能测试工程师”而非“运维”或“开发”视角。
    回答时要先给定义,再给“国内主流可接受区间”,最后补一句“如何拿到这个值”,让面试官听到“工具+场景+验收”的闭环。

知识点

  1. 响应时间(Response Time)
    第 99 分位(P99)是国内面试必考点,BATJ、银行、运营商的对外 SLA 均按 P99 签约。
  2. 吞吐量(Throughput)
    国内习惯用 QPS(读)(读场景)或 TPS(写事务)衡量,面试时要区分“业务事务”与“数据库事务”。
  3. 并发度(Concurrency)
    不是“并发线程数”,而是“系统同时服务的业务会话数”,对应 LR/JMeter 里的 Active Threads 与线上连接池。
  4. 错误率(Error Rate)
    国内生产红线:金钱链路 0.1%,非金钱链路 1%;面试时把“可重试 5xx”与“不可重试 4xx”拆开讲,会加分。
  5. 资源利用率(CPU/内存/IO/网络)
    国内云主机普遍 2C4G~8C32G,CPU 超 70% 即可触发弹性扩容,因此“可接受区间”要区分“压测峰值”与“日常水位”。
  6. 稳定性指标(SOAK/内存泄漏、句柄泄漏)
    金融类项目必跑 8 h~24 h SOAK,内存涨幅 <10% 且 GC 后回落才算过。
  7. 容量余量(Headroom)
    国内监管要求“核心系统峰值余量 ≥30%”,面试时把“峰值”定义为“去年双 11 峰值 ×1.3”即可。

答案

  1. 响应时间
    定义:客户端发起请求到收到最后一个字节的时间。
    国内可接受区间:

    • 普通读接口:P99 ≤ 200 ms(ToC 页面)、P99 ≤ 500 ms(ToB 管理后台)。
    • 交易写接口:P99 ≤ 500 ms(支付下单)、P99 ≤ 1 s(复杂账务)。
      测量方法:JMeter 非 GUI 模式 5 分钟持续压测,采集 99th percentile,剔除 30 s 暖机数据。
  2. 吞吐量
    定义:单位时间成功处理的业务请求数,读场景用 QPS,写场景用 TPS。
    国内可接受区间:

    • 网关入口集群:单机房 QPS ≥ 4 万(2C4G 容器,8 实例),错误率 <0.1%。
    • 核心订单 TPS:单分库 TPS ≥ 800(MySQL 8.0,SSD,RC 隔离级别),RT P99 ≤ 200 ms。
      测量方法:梯度递增线程,找到“错误率首次突破 0.1%”前的最大 QPS,即为额定吞吐量。
  3. 并发用户数
    定义:同时在线且对系统产生压力的业务会话数。
    国内可接受区间:

    • 电商大促:峰值并发 = 去年双 11 峰值 ×1.3,系统 CPU 70% 以下可支撑。
    • 银行 App:并发 50 万(连接池 5 万,每个连接复用 10 个会话),登录接口 P99 ≤ 1 s。
      测量方法:LR 设置 5 分钟阶梯式加压,观察“活跃并发”与“响应时间”拐点。
  4. 错误率
    定义:非 2xx 响应占比,含超时、5xx、4xx(业务校验失败需剔除)。
    国内可接受区间:

    • 资金交易:错误率 ≤ 0.1%,且不可重试错误 =0。
    • 非资金链路:错误率 ≤ 1%,可重试 5xx 自动补偿后视为成功。
      测量方法:JMeter 断言过滤业务成功标识,Grafana+Prometheus 二次校验。
  5. CPU 利用率
    定义:整机或容器 user+sys 占比。
    国内可接受区间:

    • 压测峰值:单容器 CPU ≤ 70%,整机 CPU ≤ 60%(留 30% headroom)。
    • 日常水位:CPU ≤ 30%,保证突发 2 倍流量 10 分钟内不扩容。
      测量方法:Prometheus node_exporter 15 s 粒度,取 95th percentile。
  6. 内存利用率
    定义:JVM 进程 Old 区或容器 RSS 占比。
    国内可接受区间:

    • 压测峰值:Old 区占用 ≤ 50%,Full GC 后回落 ≥ 30%。
    • 8 h SOAK:内存涨幅 ≤ 10%,句柄泄漏 =0。
      测量方法:Arthas dashboard 每 30 s 采样,GC 日志 G1PrintHeapUsage。
  7. 网络与磁盘 IO
    定义:网卡吞吐与磁盘 util%。
    国内可接受区间:

    • 内网千兆:带宽 ≤ 600 Mbps(留 40% 余量),重传率 <0.01%。
    • SSD 盘:util% ≤ 40%,await ≤ 5 ms,svctm ≤ 2 ms。
      测量方法:sar -n DEV 1 s 与 iostat -x 1 s,取压测最后 5 分钟均值。

拓展思考

  1. 指标必须“可验收”:国内甲方招标书常见条款“P99 超过 200 ms 即按合同金额 1% 扣款”,因此回答时要把“测量工具、采样粒度、剔除规则”一起说出来,体现测试工程师的“裁判”身份。
  2. 区间要“分段”:同一接口在大促、日常、灾备三种场景下的可接受值不同,面试时主动分层,可展示容量规划能力。
  3. 指标要“可下钻”:说完 P99 后,面试官往往会追问“如果 P99 超了如何定位”,提前准备“trace→log→profile”三级漏斗,把 Arthas、SkyWalking、perf、FlameGraph 工具名抛出来,可自然过渡到“性能分析”话题,掌握节奏。