基准测试是什么
基准测试是在受控环境下用接近真实的负载模型测量系统表现,并输出可复现的报告。它回答的是「在什么负载、什么环境、什么数据规模下,吞吐与延迟分位数分别是多少」,而不是「哪个产品更快」。两个口径不一致的结果(不同并发模型、不同数据规模、不同预热方式)直接对比会得出错误结论,所以报告必须把环境和负载写进结论里。
基本信息
| 要素 | 负载模型、环境说明、度量口径、多轮重复 |
|---|---|
| 输出 | 实验报告:吞吐、延迟分位数、资源占用 |
| 注意 | 口径不一致的测试结果不可直接比较 |
| 环境 | 实例规格、内核与中间件版本、网络拓扑都要记录 |
| 结论口径 | 给出适用边界,而不是一句「更快」 |
典型使用场景
- 选型阶段比较同类数据库或消息中间件在自身负载下的表现
- 上线前评估容量规划,确定扩容阈值与告警水位
- 版本升级或参数调优前后做对照,验证是否真的有效
- 故障复盘时复现瓶颈,把猜测换成可测量的证据
- 为采购或续约提供数据支撑,避免只凭厂商演示材料
测试报告要点示例
测试报告要点示例
环境:实例规格/内核版本/数据规模 # 缺一项,结论就无法被复核
负载:读写比例、并发模型、预热方式 # 预热方式对延迟分位数影响很大
结果:P50/P95/P99、吞吐、错误率 # 只看平均值会掩盖长尾
复现:脚本与配置随报告归档 # 报告与脚本分离,等于不可复现
重复:至少三轮并剔除首次冷启动轮次 # 单轮结果受环境影响大,不能当结论度量口径读法
| 指标 | 含义 | 正常与异常 |
|---|---|---|
| P50 | 一半请求快于此值 | 与平均值接近说明分布正常 |
| P95/P99 | 长尾请求的延迟水平 | 远高于 P50 说明存在排队或个别慢查询 |
| 吞吐 | 单位时间处理量 | 与负载模型绑定,脱离负载无意义 |
| 错误率 | 超时与失败占比 | 任何非零错误率都要解释,不能只报吞吐 |
| 预热期 | 缓存与连接池未稳定的阶段 | 把预热轮次计入结论会低估延迟 |
忽略错误率只看吞吐,会把「快速失败」当成高性能:压测中大量请求直接返回错误,吞吐数字很漂亮,上线后表现为大面积超时。