我不知道如何设置 Nginx 和 php-fpm 以允许来自单个 IP 的 6 个以上并发连接。我有以下简单的 PHP 文件(无 FW):
<?php
// long-request.php
sleep(15);
--
<?php
// instant-request.php
echo 'Meow World!';
如果我打开超过 6 个浏览器窗口,long-request.php
则instant-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 上的详细答案。