我遇到了 Apache 2.2.15(CentOS 6.x x64)的问题,导致内存负载过高,甚至消耗了 8GB 交换空间的 100%,平均负载 >125。VM 是 Azure A2 VM(2 vCPU,3.5GB RAM)。这已经运行了相当长一段时间,根据 WordPress 统计数据,我的流量没有太大变化。该服务器还托管 MySQL 5.5.43 x64,但负载非常低。我还将 Predis 与 Azure Redis 结合使用来缓存 [大部分] WordPress 网站。最后,我使用了 mod_fcgid 和 php5_module(这是正确的,还是我只需要 mod_fcgid?)。
我尝试过的事情:
从预成型转移到工人 MPM。
更改了工作器 MPM 的参数:
启动服务器 3
最大客户数 150
最小空闲线程数 15
最大空闲线程数 100
每个子线程数 25
每个子项的最大请求数 500
减少加载模块的数量
关闭 KeepAlive(刚刚尝试过,正在等待结果,但看起来不太乐观)
最终,Apache 进程耗尽所有内存,然后是交换。
还有其他建议吗?FWIW,我的 WordPress 网站通常每天的点击量约为 600 - 800 次,最高为 1100 次,但那时我还没有遇到这些问题,同时仍在使用 prefork。
编辑:找到https://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-centos-5.2并按照该文章,修改 php.conf。mod_php 不再出现在 apachectl -t -D DUMP_MODULES 中。
答案1
解决方法是按照以下说明进行操作https://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-centos-5.2。注释掉 php.conf 中的所有内容。之后,mod_fcgi 将在自己的进程中而不是 Apache 的进程中接管 php 的处理。