【发布时间】: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 执行并行压力测试?
提前感谢您的任何回复
【问题讨论】:
-
这是一个操作系统限制:stackoverflow.com/a/34645/366348
-
是的,我确认这是我的操作系统的限制。
标签: linux codeception