我有一台大多数时候都可以正常运行的Ubuntu机器,但是每隔几天就会发生一件事:
如果我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可能是不安全的*。
*:是的,在某些情况下,这是非常不准确的。 这仍然是一个很好的经验法则。