什么是弹性伸缩(Auto Scaling)?
弹性伸缩是指 云计算平台根据实时负载自动调整计算资源(如服务器实例、容器Pod)数量,以确保系统在高峰时保持稳定,在低谷时节省成本。
什么时候会触发弹性伸缩?
弹性伸缩的触发通常基于 预定义的规则,常见条件包括:
1. CPU/内存使用率(最常用)
- 示例规则:
- 如果 CPU 平均使用率 > 70% 持续 3 分钟,自动扩容 2 台实例。
- 如果 CPU 平均使用率 < 30% 持续 5 分钟,自动缩容 1 台实例。
- 适用场景:通用型业务(如Web服务、API服务)。
2. 请求量/QPS(适合流量波动大的业务)
- 示例规则:
- 如果 平均请求量 > 1000 QPS 持续 2 分钟,扩容 3 台实例。
- 如果 平均请求量 < 300 QPS 持续 10 分钟,缩容 1 台实例。
- 适用场景:电商大促、秒杀活动、突发流量。
3. 自定义监控指标(如队列积压、延迟)
- 示例规则:
- 如果 消息队列积压 > 5000 条,扩容消费者实例。
- 如果 API P99 延迟 > 500ms,扩容后端服务实例。
- 适用场景:异步任务处理、高延迟敏感业务。
4. 定时伸缩(预测性扩容)
- 示例规则:
- 每天 9:00 扩容到 20 台实例(应对早高峰)。
- 每天 23:00 缩容到 5 台实例(夜间低峰)。
- 适用场景:周期性流量(如办公系统、打卡应用)。
弹性伸缩的典型工作流程
- 监控:云平台(如 AWS Auto Scaling、K8s HPA)实时采集指标(CPU/QPS/延迟)。
- 判断:对比预设阈值,决定是否触发扩容/缩容。
- 执行:自动创建或销毁实例,并注册到负载均衡。
- 稳定:新实例加入后,流量自动均衡,系统恢复稳定。
你的 JMeter 测试如何关联弹性伸缩?
在压测中,你可以:
- 观察触发时机:
- 当 JMeter 模拟的 QPS 达到 1500 时,是否触发扩容?
- 扩容后,TPS 是否提升(如从 200→450)?延迟是否下降?
- 验证伸缩速度:
- 从触发到完全扩容需要多久?(理想情况:1-3 分钟)
- 缩容是否过于激进(可能导致短时间内再次扩容)?
- 检查资源利用率:
- 扩容后 单实例的 CPU/内存是否下降?(说明负载被分摊)
弹性伸缩的注意事项
- 冷却时间(Cooldown):避免频繁伸缩,设置合理的间隔(如 3-5 分钟)。
- 最小/最大实例数:防止无限扩容(成本失控)或过度缩容(服务不可用)。
- 健康检查:确保新实例启动完成后再接收流量。
- 成本权衡:突发流量用弹性伸缩,长期高负载建议预留实例(更便宜)。
结论
在你的测试中,如果 TPS 从 200 提升到 450,同时触发了弹性伸缩(如实例数从 10→15),说明:
- 系统吞吐能力提升(扩容成功)
- 延迟下降(新实例分摊了压力)
- 资源占用增加是合理的(符合弹性伸缩的设计目标)
支付宝这一次力度够大的啊,后台看到有人居然领了 20 元,你也来试试