我正在使用fastcgi与worker MPM和php一起运行apache。
以下是我的mpm限制:
StartServers 5 MinSpareThreads 5 MaxSpareThreads 10 ThreadLimit 64 ThreadsPerChild 10 MaxClients 10 MaxRequestsPerChild 2000
我也安装了我的php-cgi与以下内容:
PHP_FCGI_CHILDREN=5 PHP_FCGI_MAX_REQUESTS=500
我注意到我的平均php-cgi进程正在使用大约200多MB的RAM,即使它们刚开始时也是如此。 不过,我的php memory_limit只有128M。
这怎么可能,我能做些什么来降低php-cgi的内存消耗?
有些情况下,PHP可以超过configuration的内存限制(memory malloc直接在扩展中),但我怀疑这可能不是这种情况。
我注意到,我的平均php-cgi过程使用大约200 + MB
你是怎么测量的? 大部分的TXT段将被共享 – 所以实际的内存使用量比你在/ proc文件系统或ps / top中看到的要less得多。 虽然你可以尝试parsinglsof的输出,但是在实践中,我发现退后一步,看看正在进行的请求的数量(例如,从连接的套接字的数量),并将其与所报告的空闲内存进行比较,less缓冲区/caching)。
PHP中的内存限制是内部内存限制 – 即引擎允许用户脚本通过其私有分配器分配的数量。 但是除此之外,引擎为其内部需求分配了内存,这些内存并不总是被计入极限(有些是但不是全部),内存是由库分配的等等。所以期望真实的内存用法比memory_limit设置稍大。
另外,如上所述,工具报告的一些数字是为代码,堆栈,OS I / O缓冲区,库之间的共享内存等分配的内存,因此请仔细查看您正在检查的数字。