我的开发人员最近失踪了,我需要对我的网站进行一些小改动。
以下是我将要提到的代码:
my $process = scalar(@rows);
$process = 500 if $process > 500;
my $pm = Parallel::ForkManager->new($process);
这是来自Perl脚本的代码,它通过cron作业从API系统中删除数据。每次运行cron作业时,它都会为该文件打开大量进程。例如,cron-job.pl
将运行100次以上。
它打开的实例数量取决于需要检查的数据量,因此每次都不同,但似乎永远不会超过500.上面的代码会导致这种情况发生吗?
我不熟悉使用ForkManager,但是从我所做的研究来看,它看起来像是多次运行同一个文件,这样它就会从API系统中提取多个数据流时间。
问题是正在运行的实例数量显着减慢了服务器的速度。要降低实例数量,是否真的很简单,只需将500
更改为较低的数字,或者我错过了哪些内容?
答案 0 :(得分:1)
要降低创建的实例数,是的,只需将500(在两种情况下)降低到其他值。
Parallel::ForkManager是一种使用fork(生成新进程)来处理并行处理的方法。传递给new()的参数指定要创建的最大并发进程数。
答案 1 :(得分:0)
您的代码简化为
my $pm = Parallel::ForkManager->new(500);
这意味着:在任何给定时间将孩子数量限制为500个。
如果您希望在任何给定时间执行更少的孩子,请降低该数字。
my $pm = Parallel::ForkManager->new(50);