Robo和Codeception运行大量并行进程

时间:2019-04-01 10:00:21

标签: linux codeception

我正在使用Codeception测试我的Web服务器的API端点。我想执行一些压力测试,因此,在一个名为“ StressCest”的Cest文件中,我编写了一些测试,该测试执行对服务器最常用端点的多次调用。

我想(并行)启动此Cest文件的多个实例。

为此,我使用了Robo。我已经设置了一个Robo配置文件(RoboFile.php),其中包含一个“ parallelRun()”(https://codeception.com/docs/12-ParallelExecution)方法。

public function parallelRun()
{
    $parallel = $this->taskParallelExec();
    for ($i = 1; $i <= 1000; $i++) {
        $parallel->process(
            $this->taskCodecept()
                ->suite('api')
                ->test('StressCest')
        );
    }
    return $parallel->run();
}

那产生了1000个并行的StressCest进程。当我执行控制台命令robo parallel:run时,出现此错误:

  

警告:proc_open():无法创建管道在以下位置打开文件过多   /../vendor/symfony/process/Process.php行337 [错误]无法   启动新流程。错误:proc_open():无法创建管道   /../ vendor / symfony / process / Process.php:337

中有许多打开的文件

是否有某种方法可以绕过此错误,或者有另一种方法来对CestFile执行并行压力测试?

预先感谢您的回复

1 个答案:

答案 0 :(得分:0)

我已经解决了增加操作系统打开文件数限制的问题

Here is a guide for MacOSX also valid form Mojave

谢谢大家的帮助。希望这个问题对其他人有帮助。