作业调度 - crontab最佳解决方案?

时间:2011-06-09 20:07:30

标签: cron scheduling crontab

我正在开发一个很大程度上取决于作业调度的基于Web的应用程序。作业将非常短,例如单个HTTP请求。但是,会有很多。每天可以安排超过几千个工作岗位,但不是所有工作岗位都在同一时间。我的第一个倾向是使用crontab来安排这些工作,但我不确定这是否是最好的解决方案。

我看到crontab主要用于安排工作密集型管理任务,但不适用于非常短的工作。 crontab甚至适合那个吗?它可以处理如此大量的工作吗?我应该实施自定义解决方案吗?有没有可以提供更好解决方案的服务?性能

非常感谢!

4 个答案:

答案 0 :(得分:3)

Cron将运行任何东西 - 长或短。但是,如果您每天要运行数千个作业,那么您可能会遇到cron允许的最大频率为每分钟一次的问题。如果您需要更高的费率,那么您将不得不寻找其他解决方案。

Cron的一个可能的替代方案是Fat Controller,它像cron一样工作,因为它基本上运行其他程序但具有一些优点。胖控制器可以做几件事:

  • Daemonise任何东西 - 给它任何PHP,Python,无论什么脚本,甚至Java应用程序,它都可以被守护进入后台进程。

  • Mulitask任何东西 - 可以并行运行任何脚本/程序的许多实例。它甚至支持反馈,因此处理批量数据的脚本可以说是否必须运行更多实例(即还有更多数据需要处理),或者是否没有更多数据,因此不需要运行脚本一段时间。

  • 重复任何事情 - 任何脚本完成执行后都可以重新运行。您还可以指定一个间隔,以便在重新启动之前等待x秒(这在您的情况下可能很有用)。最重要的是,在脚本完成重启之后等待x秒,cron将在脚本启动后等待x分钟,因此有可能最终会出现多个同时运行的脚本实例,这可能不是您想要的。

管道中有更多功能 - 项目正在积极开发中,我欢迎任何建议 - 如果它们很有趣,那么我会尽力将它们合并!

网站是:http://www.4pmp.com/fatcontroller/

我正在修改网站,所以目前有点难看,但有很多关于配置,入门和使用案例的信息。

答案 1 :(得分:0)

这就是我用于个人网站的内容。当然,cron有能力运行长期运行的任务,但它绝不应限于此。

答案 2 :(得分:0)

Cron的分辨率是一分钟;它每分钟只唤醒一次,看看是否应该运行任何东西。如果你需要更严格的分辨率,你需要一个自定义解决方案。

另外,如果你在OS X上这样做,你将使用launchd而不是cron。 (但仍然支持cron。)

答案 3 :(得分:0)

我的公司制作CloudQuartz(www.thecloudblocks.com),它允许您通过API安排作业,并在它们运行时获得回调。

我们做到了这一点,因此我们可以在使用CRON或Windows调度程序无法实现的服务器集群上安排作业。