节点工作进程 / cron 工作建议

Posted

技术标签:

【中文标题】节点工作进程 / cron 工作建议【英文标题】:Node worker process / cron job advice 【发布时间】:2013-04-21 21:48:27 【问题描述】:

我有一个项目数据库,我需要经常更新——或者更确切地说只是执行——。我正在使用消息队列 (Kue) 来处理这些作业的并发性,但我将作业添加到队列的过程如下所示:

setInterval(function () 
  feed.find(, function (error, foundModels) 
    jobs.create('update feeds', 
      feeds: foundModels
    ).save()
  )
, 6000)

您认为这样的轮询是将作业添加到队列中的最佳方式吗?还是每个 feed 都应该有自己的计时器(例如,每个作业都会在完成后 6 后产生另一个作业)?

【问题讨论】:

【参考方案1】:

我通常按照您的方式进行操作。在您的情况下,它总是以 6 秒的间隔推送作业。这很好,只要您的工作不超过 6 秒。如果您的工作耗时超过 6 秒,那么您将开始积压,您需要增加资源来处理更大的负载。如果资源使用量达到峰值,而您又不能针对峰值进行调整,并且您没有适当的自动化流程(您应该),这可能是一个问题。

另一种方法是仅在最后一次调用返回后 6 秒调用您的函数。你会这样做:

function update() 
  feed.find(, function (error, foundModels) 
    jobs.create('update feeds', 
      feeds: foundModels
    ).save(function() 
      setTimeout(update,6000);
    );
  );

setTimeout(update, 6000);

我假设您的 .save 方法像所有优秀的异步库一样接受回调。 :-)

【讨论】:

这就是我的想法。我是负载平衡领域的新手,所以感谢您的澄清。不胜感激!

以上是关于节点工作进程 / cron 工作建议的主要内容,如果未能解决你的问题,请参考以下文章

cron 作业在 cpanel 中无法正常工作

工作日的 CPanel Cron Job 设置

PHP线程池?

Linux任务计划周期性任务执行之cron/crontab

关于 HTTP 服务的 Erlang 设计建议

工作中常用的Linux命令:crontab命令