压测合格标准
压力测试的合格标准没有统一的百分比数值,合格与否主要取决于测试目标和系统具体需求,而非简单一个百分比数字。
核心判断依据是是否达到预定的性能指标要求,这些要求通常在测试前明确制定,通常包括以下几个关键维度和常见的参考标准:
稳定性/错误率:
- 最核心指标之一。 在高并发压力下,系统能稳定运行,不出现严重错误或崩溃。
- 参考合格标准: 通常情况下,要求请求失败率/错误率 低于 0.1% - 1%。 即成功率至少达到 99% 或 99.9% 甚至更高。
- 关键点: 不能出现服务完全不可用(如进程崩溃、宕机)或大量核心功能失败。对于支付、金融等关键系统,要求往往非常严格(如 99.99%)。
响应时间:
- 核心指标之一。 在目标并发用户或请求压力下,系统的响应时间(如平均响应时间、90%响应时间、99%响应时间)是否达到业务要求。
- 参考合格标准: 满足业务 SLA/SLO。 例如:
- 网站首页加载平均响应时间不超过 1 秒,90%请求响应时间不超过 2 秒。
- 核心交易接口平均响应时间不超过 200 毫秒,99%响应时间不超过 500 毫秒。
- 响应时间是否合格与业务场景和用户期望密切相关,需要具体定义。
资源利用率:
- 服务器资源(CPU、内存、磁盘 I/O、网络 I/O)在高压下是否处于健康状态,是否存在瓶颈。
- 参考合格标准:
- CPU 使用率: 建议长期稳定在 70% - 80% 以下。短期峰值到 90%+ 可以接受,但持续高位运行是瓶颈信号,影响稳定性。
- 内存使用率: 不出现耗尽(OOM),建议有 20% - 30% 的余量,以避免临时需求导致溢出。
- 磁盘 I/O: IO 等待时间不应持续过高(例如持续超过 20%-30%)。
- 网络 I/O: 带宽使用率不应达到饱和(例如持续超过 70%-80%),或出现大量错误/重传。
- 关键点: 资源要留有一定余量以应对流量波动,避免长期在极限状态运行。
吞吐量:
- 系统在单位时间内处理请求的能力(如每秒处理请求数 QPS/RPS)。
- 参考合格标准: 达到或超过预期的业务峰值吞吐量要求。例如,系统设计目标是支持 1000 QPS,压力测试时在 1000 QPS 下各项指标稳定即算合格。
可伸缩性:
- 当并发用户/请求按比例增加时,吞吐量是否能相应(或接近相应)地增加,而响应时间不会显著恶化(如非线形增长)。
- 参考合格标准: 随着负载增加,吞吐量增长趋势良好,响应时间增长在可控范围内(通常是线性的、可预测的)。
总结与结论:
- 合格 ≠ 一个固定的百分比(如 95%)。
- 合格 = 所有预设的关键性能指标(尤其是错误率、响应时间、资源健康度)都达到或优于预期目标。
- 最常见的核心硬性门槛之一是错误率(成功率):绝大多数要求请求成功率 ≥ 99%。 99.9% 或更高是更优目标。
- 资源健康度(特别是 CPU 余量) 是判断系统能否长期稳定运行的关键,通常要求有合理余量。
- 响应时间达标 是保证良好用户体验的直接体现。
- 目标必须量身定制: 这个预期目标是在测试开始前就由业务方、研发、运维、测试团队共同根据业务场景、用户期望、系统设计容量等协商确定的。没有适合所有系统的“黄金标准”。
通俗理解: 压力测试合格意味着在模拟的实际高峰压力下:
- 系统没趴窝(低错误率)。
- 用户用起来顺不顺畅(响应时间达标)。
- 服务器累但没累垮(资源不超载有余量)。
- 处理能力撑住了(吞吐量达标)。
因此,请关注你为本次压测设定的具体性能目标(SLA/SLO),而不是去寻找一个通用的百分比答案。