首页/数据/NoSQL 速查/上线前压测要点
选型与架构50 条

上线前压测要点

压测的价值取决于还原度:查询混合比例、数据总量与分布(热点 key)、缓存命中率都要接近生产,否则得到的是好看但无意义的数字。观察指标以 p99 延迟与资源饱和点为主,并做故障注入验证降级路径。

NoSQL 速查数据更新于 2026-10-13

压测的还原度决定价值

压测得到的是好看但无意义的数字,还是可信的容量结论,取决于还原度:查询混合比例、数据总量与分布(热点键)、缓存命中率都要接近生产。观察指标以 p99 延迟与资源饱和点为主,并做故障注入验证降级路径是否真的生效。

k6 压测脚本骨架

k6 压测脚本骨架
import http from "k6/http";
import { sleep } from "k6";

export const options = {
  stages: [
    { duration: "2m", target: 50 },   // 逐步加压
    { duration: "5m", target: 200 },  // 稳态观察
    { duration: "1m", target: 0 },    // 平滑退出
  ],
  thresholds: { http_req_duration: ["p(99)<300"] },  // 门槛不达标即判失败
};

export default function () {
  http.get("https://api.example.com/items?limit=20");
  sleep(1);                            // 思考时间,贴近真实用户节奏
}

基本信息

数据准备导入生产量级的数据:索引大小、分片分布与热点都在数据里体现
流量模型读写混合比例、查询类型分布、思考时间贴近真实流量
观察指标p99 延迟、错误率、连接与队列、CPU 与 IO 饱和点、复制延迟
故障注入演练单节点下线、缓存失效、依赖超时下的表现与降级是否生效
结论产出给出容量上限与瓶颈位置,而不是只报一个峰值吞吐

典型使用场景

  • 上线前容量评估:确认目标流量下的延迟与资源水位
  • 变更验证:索引调整、参数改动前后做对照压测
  • 扩容决策:找出饱和点后再决定加资源还是改结构
  • 降级演练:验证限流与降级在压力下是否按预期生效
  • 大促准备:按预估峰值做阶梯加压,确认余量

指标读法

指标含义判读要点
p99 延迟绝大多数请求的响应上限平均值会掩盖长尾,压测必须看高分位
错误率失败请求占比与延迟同时上升说明已进入过载区
资源饱和度CPU、IO、连接池使用率找出最先饱和的资源,它就是瓶颈位置
复制延迟从节点落后主节点的时间写入加压时先恶化,是容量上限的先行指标
客户端资源压测机 CPU、网络与连接数客户端先饱和会得到错误的服务端结论
压测客户端本身也可能成为瓶颈:吞吐上不去时先确认客户端资源与连接复用是否到位,再判断是不是服务端限制。
压测流量要与其他环境隔离,并明确标注目标环境:误压生产或与线上共享存储会直接影响真实用户。

易错点

  • 在空库或小数据量上压测:索引未膨胀、缓存全命中,上线后表现完全不同
  • 只压单一查询类型:真实流量是混合负载,读写互相影响才会暴露瓶颈
  • 只看平均延迟:平均值掩盖长尾问题,用户体验由高分位决定
  • 压测机与业务共用资源:客户端资源竞争让结论失真,得到的容量数字不可用

数据来源与参考

  • Grafana k6 Docs: Test types
  • Elasticsearch Guide: Rally(压测工具参考)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌