我有一个Apache 2.4网络服务器,可以在带有CentOS的AWS微实例上运行.
apache运行带有prefork MPM模块的 PHP.
通过Amazon负载均衡器访问服务器,该负载均衡器具有运行状况检查,该检查尝试每60秒访问服务器的index.PHP网页.
apache运行带有prefork MPM模块的 PHP.
通过Amazon负载均衡器访问服务器,该负载均衡器具有运行状况检查,该检查尝试每60秒访问服务器的index.PHP网页.
问题是,1-2天后,Apache使用index.PHP页面以某种方式达到256个打开的进程,并给出以下错误:
[Sun Sep 08 02:13:00.356051 2013] [mpm_prefork:error] [pid 1201] (12)Cannot allocate memory: AH00159: fork: Unable to fork new process [Sun Sep 08 02:13:13.656694 2013] [mpm_prefork:error] [pid 1201] AH00161: server reached MaxRequestWorkers setting,consider raising the MaxRequestWorkers setting
通常在发生这种情况时,不再接受新的http连接.
Apache可能不会关闭负载均衡器的所有连接.
我们有另一台带有Apache 2.2的服务器,它没有这个问题,所以问题可能是2.4版本与2.2大不相同(我们没有更改Apache的任何默认配置).
mod_status已启用,这是我们在发生这种情况时可以获得的输出:
http://www.speedyshare.com/vE3My/server-status.txt
有谁知道我们如何处理这个问题?
提前致谢!
我发现apache进程在无限期重复使用时会膨胀(泄漏内存),值得在httpd.conf中设置MaxRequestsPerChild 200并重新启动.
原文链接:https://www.f2er.com/php/139428.html