报表任务配的是每天 02:30 跑,3 月 8 日那天的记录在日志里完全找不到,前后两天都正常。容器时区设的是 America/New_York。日志里能对上时间点,这种反而好排。

美东在 3 月第二个周日把 02:00 直接拨到 03:00,02:30 这个墙上时刻当天不存在。调度器按本地时间找触发点,找不到就顺延到下一次,多数实现直接跳到第二天。这一点先确认清楚,后面就不用反复试。

zdump -v America/New_York | grep 2026
TZ=America/New_York date -d '2026-03-08 02:30'

围绕「夏令时跳变」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

处理上按这个顺序:把任务挪到 04:00 这类远离跳变窗口的时段;确认调度器对不存在的本地时间采用哪种策略 文档里一般写在 DST 一节;跨时区业务改用 UTC 存触发时间 展示层再转本地;每年两次切换日列进巡检 手动核对任务有没有补跑。

结果对不对很好判断,3 月 8 日前后各跑一次 任务都在 04:00 触发 日志里不再出现整天空缺。

作者 9823189