扩展性测试是什么
扩展性测试验证「加资源后性能如何变化」:水平扩展增加实例数、垂直扩展提高单机规格、读扩展增加副本与缓存。核心记录是资源翻倍时吞吐与延迟的变化曲线——近似线性说明扩展有效,提前走平则说明出现了新的共享瓶颈,例如数据库、连接池、缓存或网络。
基本信息
| 扩展方式 | 水平(加实例)、垂直(加规格)、读扩展(副本与缓存) |
|---|---|
| 记录内容 | 资源量、吞吐、延迟、资源利用率 |
| 线性判断 | 吞吐随资源近似倍增、延迟保持稳定 |
| 拐点定位 | 共享依赖何时成为新瓶颈 |
| 结论条件 | 结论附数据量、依赖配置与资源规格 |
| 干扰排除 | 扩容时同步观察共享依赖与新瓶颈位置 |
逐级扩容示例
逐级扩容示例
1 实例 -> 2 实例 -> 4 实例,逐级保持相同负载模型
观察:吞吐是否近似倍增、延迟是否稳定
记录:数据库负载、连接池占用、缓存命中率变化
结论:线性段有限,写清拐点位置与瓶颈资源典型使用场景
- 容量规划:预估增加实例后的承载能力与成本。
- 架构验证:验证无状态化设计是否名副其实。
- 瓶颈定位:通过逐级扩容找到第一个走平的资源。
- 成本评估:对比水平与垂直扩展的性价比。
- 发布前评审:大促或活动前的扩容方案需要数据支撑。
- 回退方案设计:明确扩展失效时降级的优先顺序。
扩展方式与新瓶颈
| 扩展方式 | 观察点 | 常见新瓶颈 |
|---|---|---|
| 水平扩展 | 实例数与吞吐的线性度 | 数据库连接数与写入竞争 |
| 垂直扩展 | 规格提升后的尾延迟改善 | 单机 GC 与线程调度 |
| 读扩展 | 副本延迟与一致性 | 主从复制延迟、缓存一致性 |
| 缓存引入 | 命中率与源站压力 | 缓存击穿与数据过期策略 |
扩展性结论要带条件:同样的实例数在不同数据量与依赖配置下表现可能不同,脱离条件比倍数意义有限。
先排除干扰因素:扩容时若数据库、缓存同步扩容,瓶颈转移会被掩盖,逐级扩容每次只动一个变量。
关注尾延迟:吞吐线性增长但 p99 恶化,说明个别实例或共享资源已经不稳。