服务器每隔几天就停下来

我有一台大多数时候都可以正常运行的Ubuntu机器,但是每隔几天就会发生一件事:

  • 我会login到机器,并开始得到一个“不能分配内存”的消息,我试图运行任何命令
  • 我会尝试SSH到机器,但我会得到一个错误,说“连接closures远程主机”

如果我login到我的主机的Web界面,并重新启动服务器,问题将完全消失,但总是回来。

我不知道如何解决这个问题。 每当我做到top ,看起来很正常。 有什么build议么?

编辑 :这里是我的top输出(几天内,按内存使用情况sorting): http : //pastebin.com/x1CbFLrA

我会同意sybreon在这听起来像内存泄漏。 如果一台机器运行良好一段时间,最终变得不可用,并在重新启动后立即工作,那么几乎肯定是内存泄漏。

关于“无法分配内存”的错误消息也证实了这一点。

top命令默认情况下通过CPU使用率对输出进行sorting。 在顶部,点击Mbutton,将按内存使用情况对输出进行sorting。 然后,留意%MEM栏。 如果你有一个泄漏内存的进程,那么它最终会移动到顶端。

我还会留意“Mem:”行中的第3列,列中列出了机器上的可用内存。

听起来像是一个负载问题。 什么是服务器的规格和它的工作量是什么?

安装Ganglia: http : //ganglia.sourceforge.net/ 。 这是我的首选负载故障排除工具。 你会喜欢它。

启用并查看日志以获取更多线索。

这是一个非常小的盒子; 这也许是一个VPS? 如果是这样的话,那么这个盒子可能会超额订购,即使您的机器认为仍有空闲的内存,您也无法分配内存。

另外,基于:

就在我查了top之后几分钟,显示了最多的内存占用过程只有8.4%,我开始再次得到我的常规错误: -bash: fork: Cannot allocate memory

您可能只是在您的Apacheconfiguration中将MaxClients设置得太高。 我看到的最大的输出是32M左右; 对于1GB的VPS,这意味着32或更高的MaxClients可能是不安全的*。

*:是的,在某些情况下,这是非常不准确的。 这仍然是一个很好的经验法则。