压测方法

常用压测形态:阶梯加压找拐点、恒定压力做浸泡(Soak)、突发流量验证弹性、全链路压测验证端到端;压测环境与数据要尽量贴近生产。

压测方法有哪几种

压测按目标分成几类:阶梯加压寻找吞吐拐点与瓶颈,恒定压力做长时间浸泡验证稳定性,突发流量验证弹性与自愈能力,全链路压测验证端到端容量。选哪种取决于要回答的问题,而不是压测工具的默认模式。

结论能不能迁移

压测结论能否用于容量决策,取决于环境与数据是否贴近生产。数据分布尤其关键:均匀随机的测试数据压不出倾斜场景下的热点问题,几个热键就足以让真实性能远低于压测结果。压测前确认数据分布、缓存状态与依赖服务的差异,并在结论里标注这些局限。

压测类型

类型目标观察点
阶梯加压找吞吐拐点与瓶颈延迟抬升点、错误率
浸泡长时间稳定性内存泄漏、连接泄漏
突发弹性与自愈能力扩容时延、恢复速度
全链路端到端容量上下游级联瓶颈

基本信息

环境尽量与生产同规格,或明确记录规格差异
数据分布要与生产一致,包含热点与长尾
观测记录吞吐、延迟分位与错误率三条曲线
结论标注假设与不确定项,避免直接当作容量承诺

典型使用场景

  • 上线前容量验证:确认目标流量下是否留有安全余量
  • 大促扩容评估:提前验证峰值流量方案
  • 性能回归对比:版本升级前后做同比压测
  • 故障注入演练:验证降级与熔断在高压下的表现
  • 限流阈值标定:以实测拐点推导限流参数

一次完整压测的排期

准备阶段先明确要回答的问题与通过标准,准备贴近生产的数据与流量模型,并确认压测流量不会影响真实用户,通常需要给压测标识打标以便在监控与日志中区分。执行阶段按阶梯加压记录曲线,到达目标负载后维持一段时间观察是否稳定,再逐步回收并发观察恢复过程。收尾阶段整理结论、记录假设与未覆盖的场景,并在线上设置与结论对应的容量水位告警。

压测数据分布要与生产一致:均匀随机数据压出的结论对倾斜场景不成立,热点键会让实际延迟远高于压测结果。

易错点

  • 只用短时高峰压测,内存泄漏这类缓慢累积的问题被掩盖
  • 测试数据分布与生产差异大,结论无法迁移到线上
  • 压测只关注服务本身,忽略数据库与第三方接口的容量上限
  • 压测环境与生产规格不同却直接复用结论,扩容比例算错

数据来源与参考

  • 《性能之巅(第 2 版)》(Gregg)
  • Locust 文档:Load Testing 概念
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌