PHP-FPM 的“活动进程”能否大于“max_children”
Posted
技术标签:
【中文标题】PHP-FPM 的“活动进程”能否大于“max_children”【英文标题】:Can "active processes" be larger than "max_children" for PHP-FPM 【发布时间】:2018-08-04 07:39:03 【问题描述】:将池设置为静态,max_children 为 5,我希望指标“活动进程”为 5 或以下。发送 10 个并发请求将报告超过 5 个“活动进程”(例如 10、12、25、...)。
这是有效的行为吗?
池配置:
# grep -v ";" /usr/local/etc/php-fpm.d/www.conf | grep -Ev "^$"
[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = static
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.process_idle_timeout = 10s
pm.max_requests = 500
pm.status_path = /status
ping.response = pong
slowlog = log/$pool.log.slow
request_slowlog_timeout = 0
request_terminate_timeout = 0
预期结果: /status 中的指标“活动进程”应低于 5。
实际结果: /status 中的指标“活动进程”高于 5。
【问题讨论】:
更多关于 Web 服务器、您用于测试的客户端以及确定“活动进程”的方法的详细信息~(我看到 /status 端点,我的错误)会有所帮助。 我认为 Enrico 用pm.max_children = 5
询问“活动进程”是否也应该
max_children_reached
在/status
上的值是多少?我想它是 0。
@MarkFox 这只是一个普通的 PHP-FPM 设置。主要是为了得到github.com/hipages/php-fpm_exporter的正确报告
/status
的完整回复是什么样的?
【参考方案1】:
根据 PHP FPM 文档,当 pm
设置为 static
时,确定子进程数量的唯一设置是 pm.max_children
。如您所料,这应该确定开始和最大数量。
需要考虑的几件事:
-
更改配置后,您是否重新启动了 PHP-FPM 和 nginx ?比如:
sudo 服务 php-fpm5 重启 sudo service nginx 重启
-
您是否有可能更改了错误的配置文件(可能是位于错误路径中的配置文件?)。您可以尝试更改一些其他值并确认它是否按预期影响 Web 服务器。
您是否有可能配置了多个池并且
/status
页面为您提供了多个池的报告。
【讨论】:
虽然我认为您的回答很好,但这不是我问题的有效答案。海事组织我相信这是错误的PHP-FPM。我在 PHP 错误跟踪器中创建了一个错误报告。在此处查看更多详细信息:github.com/hipages/…以上是关于PHP-FPM 的“活动进程”能否大于“max_children”的主要内容,如果未能解决你的问题,请参考以下文章
自动驾驶引发整零“牵手潮”,1+1能否大于2 | 中国汽车报