比较来自世界各地的卖家的域名和 IT 服务价格

请求之后永远不会放在队列中 pm.max_children 从 Nginx 和 PHP-FPM

一旦游泳池到达 pm.max_children, Nginx 在尝试发送新请求时开始超时 PHP-FPM. "max listen queue" 总是平等的 0 到页面 php-status.

PHP-FPM 5.5.16

Nginx 1.6.1

这是一个示例池 php-fpm:

[example]

catch_workers_output = no

; Configure listener
listen = /var/run/php-fpm/example.sock
listen.backlog = 65535
listen.owner = nginx
listen.group = nginx

; Unix user/group of processes
user = nginx
group = nginx

; Choose how the process manager will control the number of child processes.
pm = ondemand
pm.max_children = 10
pm.max_requests = 200
pm.process_idle_timeout = 30s
pm.status_path = /status

; Pass environment variables
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

; Host specific php ini settings here
php_admin_flag[log_errors] = on
php_admin_value[open_basedir] = /tmp:/var/www/apc:/var/www/wordpress/example
php_admin_value[error_log] = /var/log/php-fpm/example.log
已邀请:

董宝中

赞同来自:

由于这个问题仍然出现在没有答案的问题中,我会试图给出过时的答案。 显示错误 - 这是参数的估计行为 pm.max_children 依据
http://php.net/manual/en/insta ... n.php
:

子公司数量 ... 将在何时创建 pm 构建为动态。

此选项设置对将提供服务的同时请求的数量限制。

但是,每个请求应该相当快速地处理,以便为下一个查询释放该过程。 如果不,

nginx

可能是报告 «502 Bad Gateway», 只要没有更多的要求可以处理。

再一次,检查设置的值

php-fpm

配置

listen.backlog

. 它决定了队列长度 (
https://myjeeva.com/php-fpm-configuration-101.html
):

争论 backlog 确定等待队列的最大长度。

但是,该值受基本系统的限制。 看:

sysctl net.core.somaxconn

据我所知,不可能将请求排队到升序 (

php-fpm

), 如果这会导致错误。 尽管如此,您可以指定 nginx 在错误的情况下切换到另一个过程。 这可能导致例如在客户端重新启动。

如果不是

listen-backlog

/

net.core.somaxconn

, 但是,实际问题是为什么请求块

php-fpm

加工这么久。

要回复问题请先登录注册