我的httpd-error.log文件有很多条目,例如:
内存不足
内存不足
内存不足
任何人甚至可以开始debugging呢? 它没有包含任何有用的信息。
我的服务器有8GB的内存和“顶”显示我仍然有5.1GB可用。
我观察到apache(prefork)进程增长到了41mb,然后进入了100%的CPU使用时间,持续了大约10秒 – 然后进程终止了。
任何build议如何我可以开始弄清楚是什么造成这个?
首先,许多不同的东西可以写入到Apache的错误日志 – 不仅仅是Apache本身,还包括用于服务特定请求的模块或其他组件。 它可能不是Apache内存不足。
其次,还要记住,虽然32位Linux可以通过使用PAE来解决超过4GB屏障的内存,但是这并不会给个别的32位程序带来更大的地址空间。 每个程序仍然停留在其32位地址空间的范围内。 所以,尽pipe你的系统可能有空闲的内存,Apache可能不会。 您需要在64位内核上使用64位扩展,模块等来运行64位apache。
您还没有提供关于您的系统和使用情况的大量信息。
它运行什么操作系统?
它只是提供静态内容还是有涉及的自定义代码? 如果是这样,它运行在进程中(例如mod_php)或通过fastCGI,或其他….?
这个问题的一个常见原因是对PHP的数据库运行不受限制的查询 – 虽然PHP解释器有内存使用的configuration选项,但大多数数据库客户端库在编组服务器返回的数据时并不知道这一点。
由于您正在使用pre-fork服务器,内存泄漏的可能性大大降低 – 但是您的keepalive设置是什么?