【问题标题】:Robo and Codeception run large number of parallel processesRobo 和 Codeception 运行大量并行进程
【发布时间】:2019-04-03 18:57:48
【问题描述】:

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

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

提前感谢您的任何回复

【问题讨论】:

标签: linux codeception


【解决方案1】:

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

Here is a guide for MacOSX also valid form Mojave

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2016-09-28
    • 2014-07-12
    • 1970-01-01
    • 2017-09-18
    • 2016-07-19
    • 1970-01-01
    相关资源
    最近更新 更多