什么是PHP-FPM池,什么是pm.max_children?

时间:2013-11-10 13:12:08

标签: nginx drupal-7 php

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

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

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

感谢所有人的知识。

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

1 个答案:

答案 0 :(得分:5)

嗯,你可以简单地说每个池就像一个单独的php,对我来说,我使用池来运行每个不同的用户,给每个人提供适当的资源限制,例如在同一服务器上运行的单独网站

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

至于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