简体中文

开发者工具 · Crontab 生成器

每分钟运行一次 cron 作业:轮询何时出错以及使用什么

· 为什么它很重要

计划任务 轮询 性能

一个五字段通配符表达式旁边的六十分钟刻度
原始 ToolAcre 矢量图

每分钟的工作写起来很容易,但忍受起来却很昂贵。这篇文章解释了成本、它们合理的情况,以及从更长的时间间隔到守护进程和事件触发器的替代方案。

每分钟语法在完整的 24 小时一天中创建 1,440 日历候选

`* * * * *` 扩展到从 0 到 59 的每一分钟、每小时和每个日历日期。在完整的二十四小时的一天中,生成 1,440 匹配挂钟分钟标签。 ToolAcre 的预设和测试建立了语法,而其预览仅显示接下来的五个候选者,以保持界面的可读性。

计数描述的是机会,而不是成功的行动。此预览可以忽略正向区域转换期间不存在的本地分钟,并且浏览器从不执行任务。使用表达式来推断节奏,然后测量命令和调度程序存在的实际运行时效果。

运行时成本无法仅根据表达式计算

表达式不包含进程启动时间、连接计数、日志量或资源​​使用情况。一行检查和大量进口可以共享相同的五星级,但成本却无与伦比。工作簿中的间接费用列表可能是合理的,但 ToolAcre 无法从计划文本中量化它们。

因此,性能分析从生成器外部开始:观察持续时间、CPU、I/O 和实际操作的下游调用。仅在测量代表性运行后才仔细乘以候选频率。解析器可以告诉您有多少分钟值匹配;它无法告诉您每场比赛的费用是多少。

适用性取决于外部操作和延迟要求

每分钟轮询是否合理取决于延迟要求和操作设计。 ToolAcre 不知道该命令是否幂等、是否存在事件源或用户可以容忍多长时间的延迟。它不应该给时间表贴上本质上好或坏的标签。

将要求转换为最大可接受间隔,然后将其与观察到的成本和故障处理进行比较。如果五分钟的延迟就足够了,`*/5 * * * *` 将分钟候选数减少到每小时十二分钟。如果只有一分钟的延迟有效,请保留节奏并明确解决执行问题。

分钟偏移分配固定的每小时工作,但不会随机化

固定偏移量(例如 `7 * * * *`)选择每小时的第七分钟。它可以将该工作与固定在零分钟的工作分开,但它是确定性的而不是随机的。当确切的工作时间并不重要时,多个偏移量可以在整个小时内分配已知的作业。

ToolAcre 描述每小时过去的七分并预览相应的日期。它不会检查主机上的其他计划,因此无法证明所选偏移量是安静的。在分配负载之前建立库存,并在文档中保留抵消的原因。

工作线程和服务计时器是此存储库之外的替代方案

长时间运行的工作线程、事件交付和服务管理器计时器可以取代某些系统中的轮询。 Crontab 生成器未实现任何一个,并且无法从 `* * * * *` 推断出它们的配置。该存储库没有队列客户端或主管集成。

从目标架构的证据中选择替代方案。工作人员可以在引入生命周期和恢复要求的同时删除重复启动。事件路径可以减少空检查,同时添加传递语义。生成器对于任何剩余的周期性任务仍然有用,但它无法裁决这些权衡。

工作示例:降低候选频率并比较预览

比较面板中的三个表达式:每分钟、`*/5 * * * *` 和 `7 * * * *`。第一个前进一分钟,第二个选择 0、5、10 及后续倍数,第三个选择每小时一分钟位置。这些描述公开了每个更改,而无需执行轮询器。

使用这些候选列表来具体讨论延迟。如果请求在五分钟候选之后立即到达,那么下一个机会几乎还需要五分钟。这个简单的界限就是时间表证据。处理持续时间、队列延迟和成功仍然是浏览器无法提供的附加测量值。

这不包括什么——亚分钟调度,cron 无法表达

五字段 cron 无法表示秒,因为此解析器以分钟开头。六场输入被拒绝,而不是被视为更高的频率。创建 shell 循环来模拟亚分钟工作是 ToolAcre 外部的命令行为,如果没有特定于运行时的测试,则不建议在此处进行操作。

如果要求低于一分钟,请选择为该解决方案设计和记录的调度程序或工作人员。不要将不受支持的秒值强制输入第一个字段。精确的五个字段错误是一个有用的方言保护,可以防止快速的表达被无声地误读。

要点:选择满足需要的最粗略间隔 - 生成器使 */5 或 */15 表达式像五颗星一样简单

选择满足测量需求的最粗节奏,但将决策与表达有效性分开。 ToolAcre 可以使分钟、五分钟和偏移时间表在语法上同样正确。只有操作证据才能确定哪一个属于系统。

使用生成器枚举机会,然后附加来自目标的成本、延迟和可靠性测量。这种综合记录比声明在所有情况下每分钟 cron 都昂贵或假设频率较低的表达式自动修复低效工作更诚实。