linux服务器设置swap不生效的解决方法

Scroll Down

1.现象

设置了swap,在物理内存基本占满时,swap的used还是占用很少,且部分服务出现了oom。
image-1678975304571

2.解决过程

2.1.查看sysctl参数,发现swappiness值是0。

cat /proc/sys/vm/swappiness 

image

2.2.修改swappiness的值。

方法一
修改/etc/sysctl.conf中的swappiness属性的值为60(大多数linux发行版默认值),永久生效。

vim /etc/sysctl.conf

image-1678975249389

使修改生效

sysctl -p

方法二
临时修改,直接执行命令,立即生效,重启服务器后恢复原始值

sysctl vm.swappiness=10

2.3.观察效果

再开启其他服务时,swap使用率开始增加
image-1678975406347

3.swappiness的含义

swappiness是Linux的一个内核参数,控制系统在进行swap时,内存使用的相对权重。
swappiness值的范围在0-100之间。值越低,swap使用权重越低。大多数linux发行版的swappiness都设置为60,代表你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。值不建议设置过大,swap权重过大会拖慢服务的性能。