Apache 在本地主机上的内存使用率直接达到 100%

Apache 在本地主机上的内存使用率直接达到 100%

我在 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 也有类似的部分。尝试调整这些部分中适合您安装的值。

如果问题仍然存在,请检查错误日志以查找线索。祝你好运。

相关内容