3

我有一个带有 NGINX 和 PHP-FPM 的 Drupal 站点,带有 3 个池。

我想知道什么是 FPM 池,或者只是给我指向好的文档的链接,我已经搜索过这个主题,但我发现的只是如何配置“X”以获得更好的性能。

另外,什么是 pm.max_children?我最近在日志中注意到,当池 www1 达到此值时,池 www1 停止工作,同时锁定我网站上的一个页面,直到我重新加载 PHP-FPM。为什么我会在一段时间后到达 pm.max_children?有没有办法在这种情况下检测并做出反应……重新加载 PHP-FPM?有没有办法避免达到 pm.max_children?

谢谢大家的知识。

PD:我正在使用 perusio 的 Drupal 和 Nginx 配置。

4

1 回答 1

6

好吧,您可以简单地说每个池就像一个单独的 php,就像我使用池来由不同的用户运行每个池,在资源方面为每个池提供适当的限制,例如在同一台服务器上运行的不同网站。

我不明白为什么同一个站点有 3 个池,你upstream在 nginx 中使用吗?

至于max_children允许 fpm 产生以处理并发连接的产生进程的数量,如果您有很多并发连接,那么您最好增加该数量,如果达到该数量 fpm 将不会产生另一个孩子并等待一个可以免费处理等待请求。

编辑

尝试使用此配置,可能有用,这是配置文件的片段,默认情况下已注释。

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For 
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500

这里还有一个

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0
于 2013-11-10T13:21:51.743 回答