我正在创建一个守护进程,它将运行某些计划的日志记录任务,但我担心某些点会出现瓶颈。
实际上,我有一些我想每 15 分钟执行一次的日志记录任务,而有些我只想每 30 分钟执行一次,依此类推,直到每月只需要运行一次的任务。基本上,我有一个在每个时间间隔要进行的检查列表。这些被放入队列并由线程池处理。
目前我看到任务正在运行这样的东西
15
15, 30
15, 30, 60
15, 30, 60, 120
15, 30, 60, 120, 240...
这意味着如果守护程序在 00:00 开始,那么到 04:00 将有五个进程同时运行,这不是它的结束。目前这导致下一个计划为 15 分钟的任务运行缓慢,并且只能访问有限的带宽。
然而,任务不必按小时运行。因此,如果 15 分钟任务在整点运行,则 30 分钟可能会在整点后 5 分钟开始,以尽量减少重叠。甚至可以将两个 30 分钟的任务(例如 00:00 和 00:30)拆分为四个 15 分钟的过程,以减少受到“一次性”类型问题的影响,但这确实让我头晕目眩。
是否有任何众所周知的方法来管理此类问题?