← 中文资源

简体中文版本

自动伸缩策略调优工作流

按观测到的流量形态调伸缩:伸缩触发对齐延迟信号、抑制振荡,并用回放峰值验证。

阅读英文原文

目标

伸缩策略在两个方向上失败:太慢(用户感受到爬坡)或太急(副本振荡、账单翻倍)。从真实流量形态出发调参、用延迟类触发器、诚实地配置冷却与不对称的缩容窗口,才能落在两者之间——扩容快、缩容慢,用少量闲置容量换稳定。

步骤要点

  1. 分析真实流量形态:考察爬坡速率、每日峰值、尖峰事件及其周期性,策略要匹配形态而不是抽象概念。
  2. 选对信号:负载与资源脱钩时优先延迟或队列深度做扩容触发,均匀计算型才用 CPU。
  3. 对着振荡调阈值与冷却:扩容灵敏度追上实测爬坡,冷却期防止与稳定器打架,缩容保守避免平台期翻拍。
  4. 圈定边界:min 为夜间底线与故障余量,max 作为成本熔断并接评审告警,步长在尖峰下有实际意义。
  5. 用回放峰值验证:在预发重放最近最狠的峰值,确认爬坡全程延迟守住 SLO 且过冲有界。

排错提示

CPU 只有 40% 用户却在排队,是 IO 型负载用错了信号,换成延迟或队列深度触发;副本数一天到晚上下翻拍是对称策略的必然产物,缩容窗口至少是扩容的五倍;max 被打到没触发任何告警说明上限只是摆设,触顶必须带评审与容量复盘。

适用边界

伸缩响应受资源供给速度限制,云商配额与镜像拉取时间是不可压缩的下界;回放验证依赖历史峰值代表性,超出历史的全新尖峰形态需保守加余量。

代码示例

traffic shape (observed):
  weekday ramp: 09:00 4x in 90 min (linear)
  spike events: +300% in 4 min (marketing)
  overnight floor: 11% of peak

before (CPU 70% target, no cooldown):
  ramp: replicas chase, p99 2.1s for 12 min (SLO 500ms)
  plateau: 8 -> 14 -> 8 -> 14 oscillation all day

after (tuned):
  signal: p99 latency 300ms target + queue depth 20
  scale-out: +50% steps, stabilization 60s
  scale-in: 5 min window, 20% down steps
  bounds: min 3 (failover floor), max 24 (cost breaker)

peak replay: p99 max 460ms, overshoot 2 replicas, no flap