解释一下ubuntu 9.04 apache2进程是如何pipe理的

好吧,经常在ubuntu 9.04 vps上运行的我的网站似乎崩溃了,因为apache似乎没有回应。

一个简单的apache重启解决了这个问题,但显然这不是每次发生这种情况都需要手动重启服务器的好scheme。

该网站是一个最小stream量的WordPress站点(每天最多20​​0个访问者)我也有PHP运行作为一个Apache模块与APCcaching设置。

我删除了一些在服务器上运行的进程,比如clamav,这个进程在某种程度上减less了内存的使用(服务器有一半RAM)。

用户报告在apache变得响应之前发现“内存不足”错误。

在服务器上运行顶级命令现在显示大约50%的内存使用率。

Apache错误日志不显示任何有趣的事情。

但是运行一个top命令会告诉我有4个独特的apache2运行实例,每个实例消耗大约15%的内存。 CPU在0%

任何人都可以解释为什么有4个单独的Apache进程运行,以及如何正确pipe理这些?

谢谢大家。

埃德

但是运行一个top命令会告诉我有4个独特的apache2运行实例,每个实例消耗大约15%的内存。 CPU在0%

你可能看到的是Apache的subprocess可以为请求提供服务。 你很可能不需要pipe理这些(除了确保你没有定义太高的MaxClients ,所以突然的stream量高峰并不会消耗掉所有可用的RAM和其他资源)。

相反,你需要找出什么东西占用了太多的内存 – Apache本身绝对不是最轻量级的Web服务器,但它不是那么重。 最可能的原因是PHP占用大量内存; 也许你已经为APC定义了很高的内存限制?

另外,那种低stream量,你确定你确实需要APC吗? 对我来说,RAM似乎是你服务器上最薄弱的一环,所以把现在已经安装的每一个内存扩展消耗掉是有意义的。

这是我给你的build议:

1)启用APC的基准testing你的网站,使用例如围攻 – 它可以在Ubuntu存储库中使用,所以apt-get install siege应该安装它。 让它运行一段时间,看看结果,并看看围攻是否击落了你的Apache。

2)禁用APC,重复testing。 如果结果与前一个结果相似或更好,并且/或者Apache在该testing中仍然存活,而不会耗尽内存,则现在就让服务器不使用APC。

如果你想尝试完全不同的路线,lighttpd与fcgi是一个更轻量级,也更可控的组合。 在这种情况下,lighttpd只服务器http请求和PHPparsing是在fcgi后端完成的。 您可以定义有多lessfcgi后端进程正在等待,所以即使stream量突然激增也不会消耗更多的内存,最糟糕的情况是,这会导致网站速度变慢,或者导致一些“500服务器太忙”的错误,但是您不会不需要重启任何东西。