我在 OS X 测试服务器上运行 XAMPP...我是唯一向服务器发送请求的人。我以前从未弄过 Apache 配置,所以在这里我有点不知所措。
当我启动 Apache 时,大约有 10 个 httpd 进程启动,95% 的 CPU 处于空闲状态。当我请求 WordPress 页面时,CPU 使用率上升到 50%,页面加载时间约为五秒钟。似乎页面加载完成后,CPU 使用率就会跃升至 100%,几乎所有的 httpd 进程都是如此。大量进程启动,而且它们不会消失,它们的 CPU 使用率保持不变。
我更改了 MaxRequestPerChild 设置等,但似乎没有解决问题。即使现在,大约 15 分钟没有发送任何请求,CPU 使用率仍为 100%。
以下是适用的设置:
Timeout 10
KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 3
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 0
MaxSpareServers 2
MaxClients 20
MaxRequestsPerChild 50
</IfModule>
我一直以为一旦发出请求,Apache 就会终止该进程。我能做些什么来降低 CPU 使用率,还是我必须处理这个问题?
感谢您帮助了 Apache 白痴。
答案1
检查您的 apache 日志文件是否存在重定向循环请求。
如果您在此处发布日志文件快照,将很容易提供帮助。
答案2
回答你关于请求处理后会发生什么的问题,Apache 始终保持一定数量的子进程。这样 Apache 就可以处理请求而不需要总是分叉。子进程的数量及其生命周期是可配置的。
在调整您引用的 Apache 配置部分中的值之前,请检查您正在运行哪个 Apache MPM(多处理模块)。在 UNIX/Linux 下,最常见的两个是 Prefork 和 Worker。找到 httpd 可执行文件,然后运行以下命令:
./httpd -l
这将列出所有直接编译到 httpd 中的模块,包括 MPM。您引用的 Apache 配置中以“”开头的部分仅在使用 Prefork MPM 时才有效。Worker MPM 也有类似的部分。尝试调整这些部分中适合您安装的值。
如果问题仍然存在,请检查错误日志以查找线索。祝你好运。