Linux交换块系统(冻结)

我的Debian服务器有问题。 我们运行4个不同的服务器,都有英特尔CPU和128GB的RAM。 他们中的两个跑Wheezy,其中两个跑Jessie。 我们在大量使用内存的系统上运行Java软件,并可能吃掉所有的内存。

对于这种情况,我在两SSD上运行的RAID 1上的每台服务器上安装了一个交换分区。

Jessie系统出现问题:当系统几乎耗尽内存时,它开始交换。 这是由vm.swappiness = 10参数调整,看起来对我好。 但交换本身是如此之重,系统完全挂起/冻结。 有太多的磁盘完成,系统没有响应了。

我在所有的系统上进行了一些testing,通过使用以下内容来人工填充RAM到120%

stress --vm-bytes $(awk '/MemFree/{printf "%d\n", $2 * 1.2;}' < /proc/meminfo)k --vm-keep -m 1 

系统开始交换并冻结,而20%的交换正在运行。 20秒后,系统又回来了,可以再次使用,但在冻结过程中什么都不起作用。

当然,这种行为对于一个高效的系统是不可接受的。 我所期望的是交换具有高优先级,但决不能占用系统资源的90%以上,这样系统仍然可以被处理。

调整swappiness到不同的值并没有帮助..

我们正在使用以下内核:

Wheezy:Linux A 3.2.0-4-amd64#1 SMP Debian 3.2.68-1 + deb7u1 x86_64 GNU / Linux

Jessie:Linux B 3.16.0-4-amd64#1 SMP Debian 3.16.7-ckt20-1 + deb8u4(2016-02-29)x86_64 GNU / Linux

有没有人遇到同样的问题,并find了解决办法?

编辑:谢谢大家的意见和解释。 当然,我不想使用交换作为备用内存。 120%的使用只是一个testing。 在生产中,系统可能使用了10万分之一的内存,并且已经停止响应。 在运行我们的软件的生产模式中,数据更改的频率也很高,因此整个系统只需交换less量的数据就可以使系统忙碌起来。