PHP-FPM 占用内存并创建多个池

r00*_*004 5 php vps

我用 php-fpm 设置了我的 nginx。每个 vhost 都有自己的 unix-socket 和单独的 POOL。
但问题是 php-fpm 为我在其中创建的每个配置池创建了 7 个线程/etc/php5/fpm/pool.d/

为什么?以及如何定义池仅在查看与 VHOST 相关的 url 时创建。

在此处输入图片说明

MvG*_*MvG 9

子进程的数量由池配置文件中的进程管理器配置指令控制。我猜当前的设置是pm = static withpm.max_children = 6pm = dynamic with pm.start_servers = 6。一个进程是控制进程,其他进程是准备处理请求的子进程。如果你只配置了 5 个而不是 6 个孩子,那么我必须承认我不知道最后一个过程是用来做什么的。在大型高吞吐量站点上,这种具有许多现成可用子项的配置是有意义的,但在内存受限(可能是虚拟的)环境中,您只希望不时执行 PHP 脚本,可能会采用不同的配置更合适。

为此,请编辑池配置文件并设置pm = ondemand. 然后将创建子项仅用于处理请求。这将意味着在没有请求处于活动状态时更少的内存消耗,尽管这也可能意味着创建子项需要更多时间。后者可以通过选择一个合理的 来减少pm.process_idle_timeout,以便合理数量的 php 进程保持空闲状态,而用户可以很快再次使用它们。这个“理智的数字”是由 控制的pm.max_children

注意:这个建议是基于我在 Debian 7 上的经验,但它也应该适用于 Ubuntu。