首页/系统与基础设施/自动化运维速查/批量作业的调度窗口选择
批量执行与作业50 条

批量作业的调度窗口选择

批量作业的窗口选择是先测出真实的业务与资源低谷,再把作业排进去,并让窗口长度覆盖执行、重试、回滚与验证全过程。经验式的「凌晨就是低峰」经常失效:跨境业务、其他批处理、备份与同步任务往往挤在同一时段,窗口重叠反而制造高峰。

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

窗口怎么定

选窗口看四个条件:业务低谷(按监控里的真实曲线,不按经验)、资源不叠加(备份、统计、发布、同步不要挤在同一时段)、依赖方就绪(上游供数、下游采集、数据库备份窗口)、长度够用(执行时间加失败重试、回滚与人工验证的余量)。当业务形态决定没有整段低谷时,改用削峰思路:把作业拆成小批分散到全天,或限制并发与带宽让它在峰值也能跑完。

基本信息

判据业务低谷、资源不叠加、依赖方就绪、长度含重试与验证余量
常见误区默认凌晨一定空闲;忽略跨境业务与其他批处理同窗
替代手段限速与限制并发、把作业拆小分散、按地区分窗执行
关键约束窗口结束前必须留出验证时间,否则故障延后暴露

典型使用场景

  • 全量统计与报表:读放大明显,需避开在线查询高峰
  • 大批量备份与快照:与主库写操作叠加时影响明显
  • 版本发布与重启:需要人工在位,窗口不宜落在无人值守时段
  • 数据迁移与历史回填:长事务与大流量并存,通常安排在长窗口
  • 索引重建与大表变更:锁与 IO 影响大,需窗口加超时保护
  • 跨机房同步:按各地时区分别选窗,避免全球同时跑

测低谷、错峰与窗口保护

测低谷、错峰与窗口保护
# 1 先量化真实低谷:按小时看过去一周的 CPU 与连接数曲线
# sar -u | tail -24                       # 视发行版与采集工具差异而定
# 结合业务侧请求量曲线,找出稳定低谷区间

# 2 错峰:同批作业在分钟维度拉开,避免同一时刻齐发
# 10 3 * * * /opt/jobs/report.sh          # 03:10 报表
# 40 3 * * * /opt/jobs/cleanup.sh         # 03:40 清理,错开半小时

# 3 窗口保护:超过上限即中止,避免拖进早高峰
timeout --signal=TERM 5400 /opt/jobs/report.sh \
  || echo "$(date -u +%FT%TZ) 作业超时或失败" >> /var/log/jobs/err.log

# 4 窗口结束前验证:确认业务指标回到基线,再看是否放行后续作业

作业类型与窗口特征

作业类型窗口特征资源特征主要风险
全量统计业务低谷且上游供数完成后读 IO 与 CPU 高拖到高峰影响在线查询
备份与快照与主库写峰错开IO 与网络占用明显与同步任务叠加压垮存储
发布与重启有人值守并留验证时间短时不可用回滚超窗,业务停在旧版本
数据迁移长窗口,分阶段执行带宽与存储持续占用中途失败留下不一致状态
清理与归档低峰且晚于备份IO 与目录操作密集误删与备份重叠
排窗前先做测量:从监控里取业务请求量与资源使用的分时曲线,用数据确认低谷区间。经验下限在高并发业务里往往已经不平坦,压测和生产曲线差别很大。
窗口长度只按「正常执行时间」估算,是批量作业最常见的翻车点:首次执行更慢、失败重试更慢、回滚更慢。给重试与人工处置留出余量,并设置硬超时。

易错点

  • 默认凌晨等于低峰:跨境业务、其他批处理与备份都排在同时段,窗口内反而资源最紧
  • 多个作业窗口重叠:互相抢 IO、带宽与连接数,单个作业都正常、叠加后全部超时
  • 窗口长度只够跑一次:首次失败后没有重试余地,只能等第二天再跑,数据缺失一天
  • 忽略依赖方就绪时间:上游供数未完成就启动,作业空跑一遍还占用窗口
  • 没有硬超时保护:作业拖到早高峰,影响面从内部作业扩大为线上业务

数据来源与参考

  • crontab(5) 手册:定时表达式与执行环境
  • systemd.timer 官方文档:OnCalendar 与持久化调度
  • GNU coreutils 手册:timeout 命令与信号选项

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/batch-job-scheduling-window-offpeak.html

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