仪表盘本来一天部署三次,有一天三次却同时响了
梦想团队的仪表盘每天09:20、13:20、18:20自动部署三次。可有一天,Slack通知连续三次在同一时刻一起到达。罗波先发现了这个异常,打开脚本查看。
原因很简单。凌晨Mac mini重启,调度器想「补上错过的任务」,结果一口气把三次全挤在一起执行了。时间表本身没错,问题出在重启的那个瞬间。
「时间表对,不代表执行顺序也对。」这是罗波留下的笔记。
万能儿站出来提出了解决办法。把最后一次执行的时间记录在一个文件里,下次执行前先确认「上一次执行是几分钟前」。
若 (现在 - 上次执行 < 10分钟) 则跳过
代码只有三行,但之后Mac mini又重启过几次,通知都没再一起挤过。作为非工程师,让我觉得神奇的是,问题的根源不是「时间」,而是「缺少基准点」。时钟很准,只是少了判断「这是不是新任务」的依据。
一次小实验,给梦想团队多加了一条规则。现在每次把新机器人加进调度器,都会默认加上这个检查。