CentOSnetworking服务器内存溢出 – 无法login

几天前,我的CentOS 6.2 webserver与ISPconfig 3下降到我不能通过SSHlogin或使用控制台。 控制台里充斥着“内存不足,杀死进程,牺牲孩子”或类似的东西。 等待一分钟后,通过SSHlogin提示出现,一两分钟后提示input密码,依此类推。 该系统显然严重超载。 我不能干净地重新启动它,所以我很难重置它。 我认为这是一些孤立的失败,但几个小时前也有同样的情况。 这是一个生产服务器,我无法承受试验,所以我只是将RAM(它是一个Hyper-V虚拟机)从1 GB增加到2 GB,然后重新启动它。 现在可以运行两天或类似的东西。 第二天,同样的情况与另一台类似的机器,CentOS 6.3重复。 我只是重新启动它,而不增加内存,现在运行良好。

我不确定它是什么,为什么发生,以及如何避免它。 在我看来,分配的内存太多了,所以系统开始将所有内容分页和分页,这导致性能下降,几乎停止了机器。 这是来自第二台机器的sar日志:

 12:03:14 AM CPU %user %nice %system %iowait %steal %idle 06:40:52 AM all 0.10 0.00 1.59 98.31 0.00 0.00 07:37:29 AM all 0.09 0.00 1.37 98.54 0.00 0.00 09:51:37 AM all 0.07 0.00 1.34 98.59 0.00 0.00 11:01:13 AM all 0.05 0.00 1.35 98.61 0.00 0.00 12:57:39 PM all 0.09 0.00 1.60 98.31 0.00 0.00 

是否有可能是DOS攻击? 这两台机器都有数字上连续的IP地址,所以也许这是一个接一个的地址? 它是否指向安全设置的一些弱点? 有什么办法可以更准确地说出发生了什么,为什么?

最大的惊喜是我根本无法login和操作系统。 Linux应该这样做吗? 或者是否意味着我的configuration有问题? 我是否必须进行一些设置才能禁止任何进程占用过多的内存? 这是否可能发生,或者是否意味着我已经损坏了安装?

编辑 – 有关设置的更多信息:

这两台机器都有以下安装:ISPConfig 3,Apache,MySQL,PHP,Postfix,Courier,PureFTPd,Bind(CentOS上ISPConfig的默认安装)。 他们充当networking服务器,负载相当低 – 第二台机器,从萨尔摘录,它发生的一天,服务8000文件。

sar日志是问题出现的时间段的摘录。 立即重新启动后,它恢复到正常的操作,看起来像这样(当前sar日志, iotop显示0读取0写入现在):

 07:20:01 AM CPU %user %nice %system %iowait %steal %idle 07:30:01 AM all 1.15 0.00 0.27 0.38 0.00 98.20 07:40:01 AM all 0.96 0.00 0.23 0.24 0.00 98.57 07:50:01 AM all 1.71 0.00 0.37 1.86 0.00 96.07 

根据Apache日志,没有exception的负载或exception的请求数量。 我在错误日志中发现了这个不寻常的行:

 [Tue Feb 19 05:39:30 2013] [error] server reached MaxClients setting, consider raising the MaxClients setting 

这似乎是问题的根源,不是吗?

好吧,没有更多的提示或答案,所以问题可能不够具体。 我可能会把“networking服务器超载”作为结论。 但是,我仍然不知道为什么会发生,或者是否可能是某种DOS攻击。 也许这是Apache的一个特性,当MaxClients启用时间过长时,它可能会用完? 尽pipe如此,解决scheme“重新启动服务器,增加内存”可能是我可以忍受的事情(或者至less我不得不这样做)。