【问题标题】:Cron jobs over 100 per minute, too many?每分钟超过 100 个 Cron 作业,太多了吗?
【发布时间】:2014-04-27 13:28:00
【问题描述】:

您好,我有一个有 100 个客户端站点的服务器,每个站点都有自己的数据库。 我需要每个人每分钟 24/7 运行一次 cron 作业,以检查客户端是否 当时已经设置了要发布的帖子,如果是这样,请将帖子表中的is_published 设置为1。 我的问题是,如果没有可用的基准测试,每分钟 100 个 cron 作业会显着降低我的服务器速度吗?我知道这很模糊,但我在 10MBps 端口上运行具有 1024MB 内存的 Linux 服务器。

【问题讨论】:

  • cron 作业没有什么特别之处,它们就像任何其他进程一样。
  • 工作量不算太大,但肯定有更好的方法来处理目标。您可以确定每个帖子的到期时间,并保留工作的delta-list 以及工作发布前的时间。监视该列表。随着新工作的到来,它们会进入列表。如果您需要 100 个列表,每个站点一个(因此每个发布者都不知道其他人何时设置了要发布的文章),就这样吧;您可以维护一个集成列表,其中包括站点/数据库 ID 信息以及文章信息和发布时间信息。

标签: mysql linux cron


【解决方案1】:

是的,这是一个坏主意,原因有很多。服务器上的负载就是其中之一。您真的想投入硬件资金在数百个数据库中设置标志is_published 吗?客户是否关心最多一分钟的延迟?如果客户数量的增长速度超出您的预期,会发生什么情况?

有一个更简单的方法。只需在posts 表中有一个带有PostedTime 的列。然后创建一个使用该列的视图:

create view v_posts as
    select p.*, (PostedTime >= now()) as is_published
    from posts;

【讨论】:

  • 啊,好主意!我不会想到的。这实际上为我解决了很多问题。谢谢戈登。
【解决方案2】:

每秒只有 1 个请求。如果 cron 作业在那一分钟内均匀分布,并且 cron 作业真的很简单快速,我看不出问题出在哪里。

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 2016-04-07
    • 2011-06-20
    • 2012-10-23
    • 2013-11-27
    • 2018-04-27
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多