【问题标题】:Does node.js cron affect system performancenode.js cron 会影响系统性能吗
【发布时间】:2015-02-08 18:12:22
【问题描述】:

我想在我的节点服务器中使用 cron 模块(laternode-cron 等)来安排作业。工作是发送给用户的通知(例如电子邮件),以更新他的个人资料图片,如果他在注册 1 小时后还没有这样做。我正在使用later模块在用户注册时安排任务,在用户注册时执行1小时后检查他是否上传了个人资料图片,如果没有则发送通知。我的问题是: 1. 大量定时作业会影响服务器性能吗? 2. 在不影响系统性能的情况下调度大量作业的最佳方法是什么?

【问题讨论】:

  • unix 有一个内置的东西叫做 cron。使用它来安排脚本的间隔运行。无需在 javascript 中重新发明它

标签: javascript node.js cron


【解决方案1】:

很难说一个大的数字是否会影响系统性能,因为这在很大程度上取决于他们在做什么以及他们是如何做的,以及最终一次击中的数量等等。

也就是说,我的观点是,使用这种东西来管理您所描述的各种事物会严重限制您的可扩展性,因为每个应用程序实例的范围都是(因此,如果您想水平扩展,每个管理他们自己的;如果一个崩溃而没有发送通知,会发生什么?等)。

我认为你最好使用某种分布式任务管理器,可能基于 Redis 队列或类似的。您的网络应用程序会向其中发布作业,并且一个或多个单独的进程可以在它们到期时处理正在运行的任务。这类事情有几个模块,kue 是我玩过的那个。

【讨论】:

  • kue 听起来是个好主意。但是我不明白您所说的“单独的进程或进程可以在它们到期时处理正在运行的任务”。你能详细说明一下吗?
  • 那措辞不好。我的意思是你可以通过分离功能来创建一个更具扩展性的应用程序。拥有一个具有 Web 功能的应用程序。当它需要完成一项工作时,它会将其弹出到某种队列中,而另一个进程会在它们应该完成时从队列中弹出并运行它们而不会影响 Web 应用程序。
  • 也许您可以通过创建您每小时收集的电子邮件批次并将“电子邮件收件人”列表发送给像 Sendgrid 这样的第 3 方来限制 cron 作业的数量。尽管在这种情况下,如果为丢失的个人资料图片爬取数据库的代码很密集,您仍然会减慢速度。在您实际扩展之前可能很有用的“部分”解决方案。
猜你喜欢
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2012-02-04
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多