首页/系统与基础设施/自动化运维速查/批量执行的限速与削峰手段
批量执行与作业50 条

批量执行的限速与削峰手段

限速控制单位时间内发起多少操作,削峰则避免所有任务在同一秒爆发。手段分三类:调度侧的固定间隔、随机抖动、分批推进与滚动窗口,网络侧的 tc 与连接数限制,目标侧的应用并发上限和 429 退避。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌​‌‌​‌​‌‌​‌​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌​‌‌‌‌​‌‌‌​‌​​​‌‌​‌​​​​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

限速与削峰是什么

限速约束的是「单位时间发起多少」,削峰约束的是「不要在同一个瞬间全部发起」。手段分三类:调度侧用固定间隔、随机抖动、分批推进、滚动窗口;网络侧用 Linux 的 tc、iptables 连接数限制或云上带宽包;目标侧依赖服务自身的并发上限与速率限制(HTTP 429 配合 Retry-After 退避)。限速只改变速度不改变总量,所以必须同时定义总量的硬上限与放弃策略。

基本信息

适用平台调度侧与平台无关;网络侧为 Linux tc/iptables,Windows 可用 QoS 策略
关键参数sleep 间隔、随机抖动范围、窗口大小、突发额度
观测指标目标端并发连接数、响应时间、错误率、队列深度
典型错误只加固定间隔不加抖动,多主机仍然同步

典型使用场景

  • 对共享数据库批量写操作,避免打满连接池拖垮在线业务
  • 调用第三方 API 受配额限制,需要按 QPS 平滑发起
  • 大量主机同时拉取制品,避免出口带宽瞬时饱和
  • 任务允许跨越较长窗口,但总时长必须可控
  • 目标端自身没有限速能力,从发起侧补偿

调度侧限速示例

调度侧限速示例
for h in $(cat hosts); do
  ssh -n "$h" 'systemctl restart app' >/dev/null 2>&1   # 单台动作
  sleep $((RANDOM % 3 + 1))                              # 1~3 秒随机间隔,打散同步
  printf '%s\n' "$h" >> done.txt                         # 记录已完成主机,便于续跑
done
tc qdisc add dev eth0 root tbf rate 50mbit burst 1mb latency 50ms  # 网络侧限速

限速手段与代价

手段作用点代价
固定间隔 sleep发起侧总时长被拉长
随机抖动发起侧失去精确的时间控制
分批推进调度侧需定义批次大小与批间校验
令牌桶或连接限制网络与中间件配置复杂,参数需与业务上限对齐
目标端限速目标服务依赖服务自身是否支持
固定间隔的 sleep 在多主机场景下仍然是同步的,因为每台的间隔一致。按主机名哈希取模偏移或加入随机抖动,才能把波峰真正摊平。
限速不会减少总量。窗口内跑不完的任务会顺延到业务高峰,因此需要同时设置总量的硬上限、超时放弃策略,以及「未完成」的告警。

易错点

  • 只加固定间隔不加抖动,多主机仍同步进入重负载时段,削峰等于没有做
  • 限速后没有超时与放弃机制,任务顺延到业务高峰才执行
  • 把 API 配额按总量简单均分,忽略突发额度与重试产生的额外流量
  • tc 或 iptables 限速配置过窄,连带限掉正常业务流量

数据来源与参考

  • Linux 手册页 tc-tbf(8)、iptables-extensions(8)
  • RFC 6585:HTTP 429 Too Many Requests 与 Retry-After
  • GNU Parallel 手册页:--delay 参数

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/batch-execution-rate-limiting-smoothening.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌​‌‌​‌​‌‌​‌​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌​‌‌‌‌​‌‌‌​‌​​​‌‌​‌​​​​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​