我已经用Nginx和PHP5-FPM建立了一个服务器,一切都很顺利。然而,随着我向服务器添加越来越多的站点,我看到内存使用量稳步增加,我得出结论认为PHP5-FPM是“罪魁祸首”。
我目前所做的是为每个站点设置一个单独的PHP5 5-FPM池,并根据预期的流量配置该池。但是,有了足够多的站点,我最终会有一个服务器,它只在相当多的PHP5 5-FPM“子级”上运行,而这些服务器只是在等待工作。
我刚刚发现了按需PHP5-FPM模式,它允许我以一种方式配置PHP5-FPM,以便只在实际需要时分叉子进程,然后在给定的时间内继续处理。
但是,我真的找不到太多的细节。我最好奇的是变量pm.max_children和pm.max_requests如何影响按需模式(如果有的话)。我假设变量pm.start_servers、pm.min_spare_servers、pm.max_spare_servers不适用于按需模式。
发布于 2013-02-13 17:15:04
没错,start_servers、min_spare_servers和max_spare_servers不适用于按需模式。以下变量适用于按需模式:
当您设置pm = ondemand时,FPM将在需要时立即分叉子程序,始终保持子值小于或等于pm.max_children,因此这个变量是对同时分叉的子代数的上限。
另外两个变量允许您指定何时必须销毁一个子元素:
在我的公司,我们使用按需模式对FPM,我们使用pm.max_requests强制回收的fpm儿童和避免高内存使用。
希望这能帮上忙
欢迎光临。
发布于 2016-08-24 21:34:37
可能是这个bug https://bugs.php.net/bug.php?id=72935
TLDR;如果两个客户端以按需模式连接到同一个unix套接字上的PHP,则在接受()之前,只有一个客户端才能获得accept()ed。
https://serverfault.com/questions/478281
复制相似问题