由于我的 VPS 遇到了进程限制,我已从 prefork MPM 移至 worker MPM。
但是切换后内存使用量增加了(这很奇怪,因为工作 MPM 应该具有较小的内存占用量?)。它们大多数属于 php-cgi 进程。我做错了什么吗?
我上面有大约 20 个网站,每个网站都有不同的 fcgi 包装器脚本。这可能是原因吗?
答案1
php-cgi 进程虽然被 Apache 服务器使用,但并不是它的一部分。我怀疑您问的是减少 Apache 的内存使用量,但实际上并不是它消耗了您的内存... 尝试调查还有什么在消耗内存(Apache?还是 PHP?还是其他什么?)。
回答关于减少 MPM 内存使用量的问题,在保持相同工作负载的同时,你几乎无法减少内存使用量 - MPM 将使用完成工作所需的一切。
您可以通过停用不需要的 Apache 模块来稍微缩小它,但这不会产生太大的差别。
也许您有太多空闲线程(apache 的术语中称为 SpareThreads),但同样,您要么实际上需要它们来正确处理传入请求的峰值,要么它们对内存消耗几乎没有影响 - 除非您对 Apache 的配置做了一些非常奇怪的事情。
您没有提供足够的信息来说明您当前的配置、内存消耗、工作负载,因此无法对此问题进行更多推测。也许查看 Apache 文档也会有所帮助,您在提问之前读过吗?