#教程# Centos7 增加/优化 Swap交换分区

简介

Linux 系统的Swap 分区,即交换分区,通常也称为虚拟内存,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从 Swap 中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行 Swap 交换。其实,Swap 的调整对 Linux 服务器,特别是 Web 服务器的性能至关重要。通过调整 Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

图片[1] - #教程# Centos7 增加/优化 Swap交换分区 - 云线路

使用方法

设置交换分区(swap)

CentOS7 为例,其它 Linux 系统方法也差不多,先用 dd 命令创建一个 1024M 的分区,这样就会创建/var/swapfile 这么一个分区文件

dd if=/dev/zero of=/var/swapfile bs=1M count=1024

然后进行格式化,把这个分区变成 swap 分区

/sbin/mkswap /var/swapfile

启用虚拟内存使用 swap 分区,使其成为有效状态

/sbin/swapon /var/swapfile

设置开机启动需要修改/etc/fstab 文件,增加如下一行

/var/swapfile none swap default   0   0

或者直接执行命令

echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

通过上面简单的几个命令,我们已经设置了一个 1024M 的交换分区(虚拟内存)。

优化 SWAP

如果是 HDD 硬盘的话要尽可能避免使用 swap,在 # cat /proc/sys/vm/swappiness,值默认值是 60, swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap 空间,swappiness=100 的时候表示积极的使用 swap 分区,并且把内存上的数据及时的搬运到 swap 空间里面,也就是说,你的内存在使用到 100-60=40%的时候,就开始出现有交换分区的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统 io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整,从而提高系统的性能。另:在大内存服务器中我们需要设置这个值为 0,尤其是在 Mysql 服务器上。

临时调整的方法如下,我们调成 10:

sysctl vm.swappiness=10

这只是临时调整的方法,重启后会回到默认设置的

永久修改方法:
在/etc/sysctl.conf 文件里添加如下参数:

vm.swappiness=10

或者直接在 SSH 输入命令:

echo 'vm.swappiness=10'>> /etc/sysctl.conf

加载系统参数(正常情况下会输出我们之前加入的内容)

sysctl -p

重启更新 SWAP

reboot

其它命令

查看当前内存使用情况

free -mt

查看当前交换分区路径

swapon -s

关闭虚拟内存,改成自己交换分区路径

swapoff /var/swapfile

开启虚拟内存,改成自己交换分区路径

swapon /var/swapfile

总结

如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果 Swap 空间用光了,那么系统就会发生错误。例如,Swap 空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此 Swap 空间的分配是很重要的,通常 Swap 空间的大小应是物理内存的 2-2.5 倍。

在正式的生产环境中,建议设置交换分区(swap)来提高系统和业务稳定性,当然交换分区不是万能的,若长期内存不足,建议还是增加物理内存为好。

© 本站文章随意转载,但请注明出处!
THE END
点赞6 分享
评论 抢沙发
头像
务必使用真实的邮箱地址评论,虚假邮箱的评论将不通过审核及无回复。
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容