当并发连接数超过 6 个时,Nginx 和 php-fpm 会等待完成先前的请求

当并发连接数超过 6 个时,Nginx 和 php-fpm 会等待完成先前的请求

我不知道如何设置 Nginx 和 php-fpm 以允许来自单个 IP 的 6 个以上并发连接。我有以下简单的 PHP 文件(无 FW):

<?php
// long-request.php
sleep(15);

--

<?php
// instant-request.php
echo 'Meow World!';

如果我打开超过 6 个浏览器窗口,long-request.phpinstant-request.php延迟直到第一个长时间请求的窗口完成。当发生这种情况时,php-fpm 会给我以下状态:

pool:                 www
process manager:      ondemand
start time:           28/Jun/2018:23:30:05 +0200
start since:          183
accepted conn:        56
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       0
active processes:     7
total processes:      7
max active processes: 7
max children reached: 0
slow requests:        0

我的配置:MacOS 10.13.5(17F77),PHP 7.2.5,nginx/1.13.12

php-fpm.d/www.conf

pm = ondemand
pm.max_children = 100

我尝试了几种配置。我将 pm 设置为静态、动态,增加了 *_servers 的数量,但都无济于事。


/usr/local/var/log/php-fpm.log编辑:这是(没有可疑的)的输出

[28-Jun-2018 23:57:07] NOTICE: fpm is running, pid 62887
[28-Jun-2018 23:57:07] NOTICE: ready to handle connections

答案1

我找到了答案。这是由于浏览器/http 协议允许的最大并行连接数引起的。阅读 Stackoverflow 上的详细答案。

相关内容