PHP5-FPM和’ondemand’

我已经用NginxPHP5-FPM建立了一个服务器,运行正常.但是,当我向服务器添加越来越多的站点时,我发现内存使用量稳步增加,我得出的结论是PHP5-FPM是“怪”.

我目前所做的是为每个站点设置一个单独的PHP5-FPM池,并根据预期的流量配置该池.但是,有足够的网站,我最终会有一个服务器,它只是在相当大量的PHP5-FPM“孩子”上寻找工作.

我刚刚发现了按需PHP5-FPM模式,它允许我以某种方式配置PHP5-FPM,以便子进程仅在实际需要时分叉,然后在给定的持续时间内保持活动状态.

但是,我真的找不到太多关于此的细节.我最好奇的是变量pm.max_children和pm.max_requests如何影响ondemand模式(如果有的话).我假设变量pm.start_servers,pm.min_spare_servers,pm.max_spare_servers不适用于ondemand模式.

你是对的,start_servers,min_spare_servers和max_spare_servers不适用于ondemand模式.以下变量是适用于ondemand模式的变量:

> pm.max_children
> pm.process_idle_timeout
> pm.max_requests

设置pm = ondemand时,FPM会在需要时尽快分叉子项,始终保持子项数小于或等于pm.max_children,因此该变量是同时分叉的子项数的上限.

另外两个变量允许您指定何时销毁子项:

> pm.process_idle_timeout设置孩子在被销毁之前等待没有工作的时间.它以秒为单位定义.
> pm.max_requests定义子项在销毁之前将处理的请求数(一次一个).例如,如果将此变量设置为值50,则子项将处理50个请求并自行关闭.如果FPM主进程仍然需要另一个子进程,它将分叉一个新进程.

在我的公司,我们在FPM上使用ondemand模式,我们使用pm.max_requests强制回收fpm子节点并避免高内存使用.

希望这可以帮助,

问候.

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...