首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP消耗内存&创建多个池

问PHP消耗内存&创建多个池
EN

Ask Ubuntu用户
提问于 2013-12-19 15:22:59
回答 2查看 18.2K关注 0票数 5

我用php-fpm建立了我的nginx。每个vhost都有自己的unix套接字和单独的池。

但是问题是php-fpm为我在/etc/php5/fpm/pool.d/中创建的每个配置池创建了7个线程。

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

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2013-12-19 17:38:50

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

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

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

票数 9
EN

Ask Ubuntu用户

发布于 2015-09-12 07:51:29

很多人鼓励使用pm=ondemand来节省内存。然而,这也意味着您的第一个字节(或服务器应答)的时间将非常大,因为如果您的web服务器最近没有访问,则php模块必须首先创建一个子模块,然后才能响应请求。如果您使用pm=dynamic,这意味着您总是至少有一个子程序可以响应客户端请求。在重新启动php-fpm之后,以下内容将为每个用户加载一个子程序

代码语言:javascript
复制
pm=dynamic
pm.start_servers=1
pm.min_spare_servers=1
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/393067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档