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”的主要内容,如果未能解决你的问题,请参考以下文章

12.系统工具

自动驾驶引发整零“牵手潮”,1+1能否大于2 | 中国汽车报

如果正在进行流式下载,Nginx PHP-FPM无法提供请求

liunx性能监控工具总结

如何查看linux php-fpm.pid位置

keepalived高可用