我正在开发一个很大程度上取决于作业调度的基于Web的应用程序。作业将非常短,例如单个HTTP请求。但是,会有很多。每天可以安排超过几千个工作岗位,但不是所有工作岗位都在同一时间。我的第一个倾向是使用crontab来安排这些工作,但我不确定这是否是最好的解决方案。
我看到crontab主要用于安排工作密集型管理任务,但不适用于非常短的工作。 crontab甚至适合那个吗?它可以处理如此大量的工作吗?我应该实施自定义解决方案吗?有没有可以提供更好解决方案的服务?性能
非常感谢!
答案 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调度程序无法实现的服务器集群上安排作业。