命令4configuration失败灾难

首先是一些环境细节:

硬件:
英特尔服务器主板S2600GZ
2个Intel Xeon CPU E5-2620
64GB DDR3内存
英特尔RAID控制器RS2BL(LSI SAS2108),带有4TB LVM卷,由SAS磁盘组成

软件:
Ubuntu 12.04.4 LTS / Linux 3.11.0-24-generic x86_64(含最新更新)
qemu / KVM(libvirt)和6个虚拟机(不pipe情况如何运行)
glusterfs服务器3.4.5(似乎也正常工作)
一些其他lightweght软(如bind9,keepalived,openvpn等)
没有自定义/实验/本土软件!

很长一段时间,我们的Ubuntu服务器中有一个非常奇怪的问题:周期性地用这样的“分配失败”消息来淹没系统日志:

Aug 28 07:00:18 srvname kernel: [4210234.157335] irqbalance: page allocation failure: order:4, mode:0x1040d0 Aug 28 07:00:19 srvname kernel: [4210234.711173] zabbix_agentd: page allocation failure: order:4, mode:0x1040d0 Aug 28 07:00:20 srvname kernel: [4210235.938599] zabbix_agentd: page allocation failure: order:4, mode:0x1040d0 Aug 28 07:00:34 srvname kernel: [4210250.307283] zabbix_agentd: page allocation failure: order:4, mode:0x1040d0 Aug 28 07:00:51 srvname kernel: [4210267.170359] irqbalance: page allocation failure: order:4, mode:0x1040d0 Aug 28 07:01:02 srvname kernel: [4210278.625530] zabbix_agentd: page allocation failure: order:4, mode:0x1040d0 Aug 28 07:01:19 srvname kernel: [4210295.671569] zabbix_agentd: page allocation failure: order:4, mode:0x1040d0 

消息大约每30秒logging一次,它们确实反映了真实情况:此日志片段中显示的进程确实失败(例如,zabbix代理无法将数据传输到zabbix服务器)。 但这只是冰山一angular。 当内存耗尽时, 任何需要读取/proc目录的进程 (例如pstopmpstat等)在启动后立即崩溃,因为它不能读取( /proc也不能用ls手动ls )并立即将这个事件logging到系统日志中,具有相同的顺序4分配失败错误。

所有这一切,都有足够的可用RAM(总大小的1/4),但是如果我们通过块检查出来的话,那么4阶的块就真的被耗尽了。 但是 ,我真正无法理解的是为什么这些过程实际上要求这么大的块呢? 我们有另外一个,几乎完全相同的(通过硬件和软件)服务器 – 它的命令块4也用尽了 – 感觉很好,没有订单4分配失败! 而且,这台相同的服务器负担很重

我已经多次searchnetworking,以寻找“(高阶)分配失败”症状,但似乎没有任何相关性。 我们尝试过使用各种sysctl参数(例如vm.min_free_kbytesvm.vfs_cache_pressure等),但是没有任何帮助。 最终我们回滚了所有这些更改,现在大部分的sysctl设置都是系统默认的。 我们还尝试了对/proc/sys/vm/compact_memory/proc/sys/vm/drop_caches没有任何明显的(或延长的)效果。 在经过一段长时间的疲惫之后,突然之间,一切都变得正常了(好像内存得到碎片整理,有4个块可用, /proc可用),但不是很长时间 – 在一段短时间之后,一切都开始再次。 重新启动有助于更长的时间(由于内存完全没有碎片),但最终一切都结束了相同的…

总的来说,由所描述的行为引起的唯一真正的麻烦是我们无法远程(zabbix)或本地( pstopmpstat等)监视和pipe理服务器资源。

据我所知,缺less4阶块是Linux下正常的内存状态 。 只是这些进程通常不应该请求这样的块(特别是不在其他服务器上执行的进程)。 如果有人对这种行为的原因有什么了解,我们可以检查什么或挖掘哪里 – 我们将非常感激! 我们准备提供任何额外的需求信息。

你确定这不是硬件问题吗? 如果我是你,我会怀疑RAM。 尝试运行memtest或类似的。