性能 CI 门禁是什么
性能 CI 门禁指在持续集成流水线中固化一组小而稳定的性能检查:核心接口在固定负载下跑一遍,与基线比较,超过阈值就让构建失败。它拦住的是渐进式退化——单次改动只慢几个百分点,肉眼与人工压测都察觉不到,但累积几个版本就变成线上事故。门禁要有判据、有基线、有人跟,否则只是流水线里多跑一段脚本。
基本信息
| 检查范围 | 核心接口的响应时间与错误率,控制在分钟级完成 |
|---|---|
| 判据形式 | 阈值断言:如 p95 小于五百毫秒、错误率为零 |
| 基线管理 | 记录当前版本基线值,对比相对退化而非绝对值 |
| 环境要求 | 固定环境与数据量级,避免噪声导致误报 |
| 防抖策略 | 多轮取中位数、预热后再测、剔除首次冷启动 |
| 失败处置 | 构建红灯后需有人确认与豁免流程,不能默默重跑略过 |
典型使用场景
- 日常提交:核心接口冒烟压测随每次构建执行,拦截明显退化。
- 依赖升级:框架或中间件版本升级后,对照基线验证性能影响。
- 定期全量:夜间跑更完整的性能套件,早上看趋势报告。
- 发布前检查:候选版本与上一版本同环境对比,出具发布依据。
- 回归守护:配合 thresholds,让性能目标成为回归的一部分。
门禁设计与取舍
| 设计点 | 要防的问题 | 做法 |
|---|---|---|
| 时长控制 | 流水线变慢被嫌弃 | 只跑核心接口的短压测 |
| 环境隔离 | 噪声导致随机失败 | 专属环境或资源锁定 |
| 判据合理 | 过严误报、过松无效 | 相对基线加容差百分比 |
| 趋势可见 | 只看单次失败 | 保存历史曲线,看退化趋势 |
门禁的价值来自公信力:误报一次没人管,反复误报就会被整体绕过,宁少而准。
指标放对位置:CI 里看相对退化,容量与极限结论放到定期专项压测里做。
别拿共享环境跑门禁:邻居的压测流量会污染结果,失败原因永远说不清。