服务器使用太多内存并崩溃服务器

我有一个256MB内存的小型家庭服务器。 我的一个网站在Reddit上被链接了起来,因为我有两次系统使用了太多的内存,并且崩溃到必须手动重启的地步。 有时候,我的物理内存使用率上升至90%,而我的mysql和apache服务每个都消耗大约100MB。 我怀疑发生了什么事情,就是有一大堆访问者来了,系统在将一些内存移动到交换空间之前使用了太多的内存(我有大约750MB)。 如果这个问题甚至会发生? 是获得更多内存的唯一解决scheme? 我听说过Linux中的可交换设置,可能会有所帮助。

有什么build议么? 这个问题很烦人。

不要浪费时间优化只需添加一GB的内存。 256已经是运行web和mysql服务器的最低端了。

我很确定你需要手动重置,因为系统正在密集使用你的交换空间。 请记住,交换是为了将长时间运行的进程移出磁盘空间。 当你很快需要记忆时,这是糟糕的,它被称为“交换垃圾”。 Web服务器不应该使用交换。 由于其内部缓冲区处理,数据库可能在交换时更好地工作。

所以是的,没有其他办法可以增加大约20美元的内存(或花费大量的时间优化程序)。

运行免费-m Linux将使用所有可用的内存和caching的东西。 免费会告诉你是否有问题。

free -m total used free shared buffers cached Mem: 6035 5954 80 0 69 4401 -/+ buffers/cache: 1483 4552 Swap: 4722 0 4722 

但是,只有80meg免费,但大部分是在caching设置中用于从磁盘caching文件访问。 如果你的交换线有内存使用,那么你会需要更多的内存。

是的,你需要更多的记忆来应付这种情况。

你也可以创build一个交换文件来帮助机器一直运转,直到你获得更多的内存安装。 这不是一个治疗,从交换运行是 – 但它应该停止由于内存不足而崩溃,这是更糟的。

例如制作和使用2GB(2M * 1K)交换文件:

 dd if = / dev / zero = / swapfile bs = 1K count = 2M
 mkswap /交换文件
 swapon /交换文件

如果您希望在重新启动时保留交换文件,则还要将交换文件添加到/ etc / fstab文件中。

记得交换掉swapfile,并在不再需要的时候将其删除,恢复使用的磁盘空间。

简短的回答是:是的,你需要更多的内存。

我认为你的MaxClients指令有很高的价值,你的服务器不能处理它。 看看Apache文档中的这个文档 ,如果你有256MB,1GB或4GB的RAM,这将是有用的。

如果您受到digg / redit rush的冲击,一种select是将您的站点深入2层,并创build前几页的纯HTML副本。 这将允许它提供HTML服务,而不会触及大多数用户访问该网站的数据库。

一个选项可能是安装一个caching代理,是的,它会使用资源,但会减less你的分贝等负载(当然取决于你的网站)。

您可能考虑的另一个解决scheme是使用珊瑚分销networking服务。 您可以select在“高峰负载”期间使用它,或让您的主服务器始终使用它。 您可以在线查看一些示例修改规则来分配您的stream量。