1.问题描述
linux服务器内存还有大量剩余的情况下,开始大量使用swap交换分区,具体如下图所示:
通过vmstat命令查看swap,其几乎也是占满状态,如下图所示:
2.原因分析
控制swap使用的系统参数:swappiness,wappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
linux服务器swappiness基本默认设置为30,具体如下:
[root@rhel77 ~]# cat /proc/sys/vm/swappiness
30
[root@rhel77 ~]# sysctl vm.swappiness
vm.swappiness = 30
[root@rhel77 ~]#
也就是说,当内存使用到100-30=70%的时候,就开始出现有交换分区的使用。我们知道,内存的处理速度会比磁盘(swap)快很多,这样子会加大系统IO,同时造成page的换进换出,严重影响系统的性能,所以在操作系统层面,强烈前列建议使用内存。
而问题服务器,swappiness的设置,如下图: