多少个 cron 作业才算太多?

多少个 cron 作业才算太多?

我有几个用于基本维护的 cron 作业,它们不需要耗费太多的资源。

我还有自定义任务调度(只需调用 .php 文件并通过 GET 传递信息,即:cronjob.php?param1=param ...)。这些可以很快加起来。

这些只是调用系统命令并运行外部程序(Nmap 就是其中之一)。它们通常也不会花费很长时间。

无论如何,谁能告诉我,大概什么程度才算太多?我知道这很难说,因为这取决于正在运行的作业以及运行频率,但是 crontab 程序什么时候开始“挣扎”?有人知道吗?

谢谢。

答案1

我不会担心“crontab 程序”(cron)本身的负载;你可能需要关注的是整个系统的负载。查看作业运行期间的指标(CPU 利用率、IO 速率、Web 查询响应时间)- 是否有明显的峰值?是否严重到影响系统的实际使用?

如果程序“耗时不长”,这表明没有问题。

如果您仍然担心,您可以采取其他措施来限制负载:运行作业以nice降低其优先级,按顺序运行它们而不是同时运行它们,等等。

答案2

只要搜索我们的生产系统,最大的一个就有 862 个 cron 作业(在所有用户中,最大的单个用户 root 有 117 个),并且这么多并不会特别让人头疼。

如果您每分钟、每周 24 小时启动 60 个作业,并且它们都需要两秒钟才能完成,那么您最终可能会陷入痛苦之中。但是,只要工作负载平衡(有空闲时间等),它就应该恢复。在高峰时段(CPU%,磁盘 I/O,...)密切关注系统负载,比实际作业数量更担心这一点。

这个问题类似于“在遇到麻烦之前我可以运行多少个进程?”。最好的办法是尝试一下,因为这取决于您的系统。我发现 Cron 本身几乎没有限制,但是,如果您试图安排数万个作业,那么您给它带来的压力比我曾经遇到的要大。

测量,不要猜测!

答案3

Cron 本身基本上永远不会开始出现问题;在那之前,系统就会因工作负载而完全陷入困境。

答案4

我同意这里的所有答案。要从稍微不同的角度理解它,请将 cronjobs 视为平台上的用户。

假设某个用户使用了您 1% 的 CPU(CRUD 操作/网络等)。如果同时有 100 个这样的用户(cronjobs),那么您的 CPU 将达到阈值限制,服务器可能无法处理,最终导致崩溃。

所以回到这个问题:“多少个 cron 作业太多了?” - 只要你的分析表明 cron 作业数量不会突然激增,资源,甚至 100 个 cronjobs 都可以。

相关内容