我的服务器是阿里云的服务器Centos7。CPU为1G,内存1G。平时访问速度也还可以,内存是少是少了点,但基本还是够用。今天用top看了cpu及内存使用情况,发现free的内存已经只有10多M了,发现阿里云的centos7默认居然没有swap空间。赶紧加入swap。
1、创建用于交换分区的文件
dd if=/dev/zero of=/mnt/swap bs=1M count=1024
bs=1M 表示已1M为分配单位 count=1024最大是1024M 因为我的云服务器最大内存是1024,一般建议swap交换分区是内存的1~2倍
2、设置交换分区文件
mkswap /mnt/swap
3、启用交换分区文件
swapon /mnt/swap
如果在/etc/rc.local中有swapoff -a 需要修改为swapon -a
4、设置开机时自启用swap分区
需要修改文件/etc/fstab中的swap行。
添加 /mnt/swap swap swap defaults 0 0
5、执行free -m命令查看效果
注意有时候虽然配置了swap分区但是一直没有用到swap分区,需要设置swappiness的值。
cat /proc/sys/vm/swappiness
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60
我这里设置的是20,因为物理内存比较小,如果大量使用swap空间影响IO性能。还是要充分压榨物理内存。
临时调整方式:sysctl vm.swappiness=20
要想永久调整的话,需要在/etc/sysctl.conf修改,加上:vm.swappiness = 20
增加swap分区后,并设置好swappiness的参数后,可以看到正常使用到了swap分区。