Apache“内存不足”

Apache“内存不足”

我的 httpd-error.log 文件有许多条目,例如:

内存不足

内存不足

内存不足

谁能开始调试它?它不包含任何有用的信息。

我的服务器有 8GB 内存,“top”显示仍有 5.1GB 可用。

我看到 apache(prefork)进程增长到 41mb - 然后它的 CPU 使用率达到 100% 持续了大约 10 秒 - 最后该进程死亡了。

关于如何开始找出导致这种情况的原因,有什么建议吗?

答案1

首先,很多不同的东西都可能写入 Apache 错误日志——不仅仅是 Apache 本身,还有用于处理特定请求的模块或其他组件。可能不是 Apache 内存不足。

其次,还要记住,虽然 32 位 Linux 可以使用 PAE 来寻址超过 4GB 的内存,但这不会为单个 32 位程序提供更大的地址空间。每个程序仍然被困在其 32 位地址空间的范围内。因此,虽然您的系统可能有可用内存,但 apache 可能没有。您需要在 64 位内核上运行 64 位 apache,并安装 64 位扩展、模块等。

答案2

您没有提供大量有关您的系统及其使用情况的信息。

它运行在什么操作系统上?

它只是提供静态内容还是涉及自定义代码?如果是这样,它是在进程内运行(例如 mod_php)还是通过 fastCGI 或其他方式运行……?

该问题的一个常见原因是从 PHP 对数据库运行不受约束的查询 - 尽管 PHP 解释器具有(并尊重)内存使用的配置选项,但是大多数数据库客户端库在编组服务器返回的数据时都没有意识到这一点。

由于您使用的是预分叉服务器,内存泄漏的可能性大大降低 - 但您的保活设置是什么?

相关内容