首页 > 解决方案 > FastCGI 并发。IIS 如何创建新进程?

问题描述

为了测试 IIS 如何创建新的 FastCGI 进程,我创建了一个简单的示例。

  1. 测试.php
<?php
echo 'start:' . date("d.m.Y H:i:s", time());
sleep(10);
echo ';finish: ' . date("d.m.Y H:i:s", time());
?>
  1. 开始.bat
@echo off
set url=http://localhost:8093/test.php
for /l %%i in (1,1,20) do (
    start %url%
)

Bat 文件几乎同时执行带有睡眠功能的 test.php 20 次。但结果有点出乎意料。

pid: 11716;start: 24.12.2020 12:18:16;finish: 24.12.2020 12:18:26
pid: 11716;start: 24.12.2020 12:18:26;finish: 24.12.2020 12:18:36

pid: 11716;start: 24.12.2020 12:18:36;finish: 24.12.2020 12:18:46
pid: 3660;start: 24.12.2020 12:18:36;finish: 24.12.2020 12:18:46
pid: 1316;start: 24.12.2020 12:18:36;finish: 24.12.2020 12:18:46
pid: 14788;start: 24.12.2020 12:18:36;finish: 24.12.2020 12:18:46
pid: 15752;start: 24.12.2020 12:18:37;finish: 24.12.2020 12:18:47
pid: 8836;start: 24.12.2020 12:18:37;finish: 24.12.2020 12:18:47

pid: 11716;start: 24.12.2020 12:18:46;finish: 24.12.2020 12:18:56
pid: 3660;start: 24.12.2020 12:18:46;finish: 24.12.2020 12:18:56
pid: 1316;start: 24.12.2020 12:18:46;finish: 24.12.2020 12:18:56
pid: 14788;start: 24.12.2020 12:18:46;finish: 24.12.2020 12:18:56
pid: 15752;start: 24.12.2020 12:18:47;finish: 24.12.2020 12:18:57
pid: 8836;start: 24.12.2020 12:18:47;finish: 24.12.2020 12:18:57

pid: 11716;start: 24.12.2020 12:18:56;finish: 24.12.2020 12:19:06
pid: 3660;start: 24.12.2020 12:18:56;finish: 24.12.2020 12:19:06
pid: 1316;start: 24.12.2020 12:18:56;finish: 24.12.2020 12:19:06
pid: 14788;start: 24.12.2020 12:18:56;finish: 24.12.2020 12:19:06
pid: 15752;start: 24.12.2020 12:18:57;finish: 24.12.2020 12:19:07
pid: 8836;start: 24.12.2020 12:18:57;finish: 24.12.2020 12:19:07

因此,最初 IIS 只创建了一个进程 - 11716,它执行了两次,然后 IIS 又创建了 5 个进程,这 6 个进程中的每一个都执行了 3 次。测试前我设置参数MaxInstances=200,threadPool参数MaxProcesses=100。

谁能解释一下这种行为以及如何配置 IIS 使请求并行运行?

标签: phpiisfastcgi

解决方案


推荐阅读