2015-03-13 108 views
0

我现在有大约35个cron作业。他们中的大多数都是PHP脚本,可以进行刮擦或做一些计算。脚本还循环了10-20个不同的服务器来完成这些擦除。 (他们是不同的国家,所以他们必须分开来电)。大量长时间运行的cron作业

所以我们有30个脚本,每个脚本都有20多个服务器循环,因此每个脚本需要大约5-15分钟的时间才能运行。我现在每个脚本都分开了。

但有80个独立脚本运行而不是35个脚本循环并需要一段时间会更好吗?每个脚本可能需要1-2分钟而不是10-15分钟。

这当然会产生更多的PHP过程。是否有任何问题或限制与10-15或更多的PHP进程同时运行?

我在Rackspace上运行云服务器性能。

回答

0

就个人而言,如果工作需要按照一定的顺序完成,我会尽可能地使其线性化.....它可能需要更长的时间,但我总是犯错。数据准确性的一面。

+0

是的,我的目标是准确的,但脚本都是独立的,即使是循环中的脚本。每个长时间运行的循环都像一个黑洞,有时候1/20失败,很难追踪。 – 2015-03-13 19:31:22

0

这取决于。

如果您正在创建更多的进程将同时运行,您将增加整个内存的占用空间。每个进程都会为进程运行提供自己的内存开销,并加载其进程所需的任何库。 (除了需要做的事情之外)。您还将拥有超过两倍的脚本来监视它们始终成功运行。

但是,在创建更多进程时,您将能够加快处理速度,因为您基本上正在创建一个多线程。允许一个进程继续而另一个进程阻止等待I/O。

如果每个脚本对另一个脚本没有依赖性,将它们分解为较小的脚本应该没问题。如果你可以处理监控更多的脚本,并且服务器可以处理它,那么我会这样做。

如果脚本确实存在依赖关系,或者如果您必须同时运行这么多服务器,请将它们放在一起。

也就是说,我也会尝试优化脚本,确保没有什么可以做的事情来使它们更快,而不需要创建更多的流程。

+0

据你所知,没有一个可以派生的PHP procs数量的ini配置?我在nginx后面运行PHP5-fpm。脚本不依赖于对方。他们虽然加载库。 – 2015-03-13 19:32:18

0

根据你如何安装服务器,我会立即运行它们。另外,我还会在晚上,在Web服务器未使用的时间以及业务操作期间运行它们,除非您的Web应用程序依赖于它。如果你在Rackspace的云服务器上,我不会担心带宽,尽管增加你的内存可能是一个进一步的问题。

如果你有足够数量的内存,产生更多的PHP进程不应该担心;在linux方面没有限制。

a) Figure out which cron needs to run in which order 
b) Order the cron to be run at night, around mid-night 
c) Run and fireoff the 80 scripts at once 

这也将是一个好主意,你发送一封电子邮件,cron的结果或报告,这一切都通过成功地去了,基于批处理而不是单独的cron。

+0

据你所知,有没有一个可以派生的PHP procs数量的ini配置?我在nginx后面运行PHP5-fpm。 – 2015-03-13 19:30:25

+0

它没有限制,在我的一台服务器上有超过80个httpd进程运行在aws ec2(large.1)上的加速云服务器上, – unixmiah 2015-03-13 19:32:52