Robo和Codeception运行大量并行进程

问题描述 投票:0回答:1

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

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

对于这个建议,我使用过Robo。我已经在里面设置了一个带有“parallelRun()”(https://codeception.com/docs/12-ParallelExecution)方法的Robo配置文件(RoboFile.php)。

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():无法创建管道第337行的/../vendor/symfony/process/Process.php中打开的文件过多[错误]无法启动新进程。错误:proc_open():无法在/../vendor/symfony/process/Process.php:337中创建管道太多打开的文件

是否有一些方法可以绕过此错误或使用CestFile执行并行压力测试的其他方法?

提前感谢您的回复

linux codeception
1个回答
0
投票

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

Here is a guide for MacOSX also valid form Mojave

谢谢大家的帮助。希望这个问题可以帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.