linux 使用文件增长虚拟内存 swap

以前买了个云服务器玩,不过是最低配置的1核1G,后来发现这个内存过小了,随便装几个软件就不行了,内存消耗较大的像 redis 运行起来不少问题。mysql

这些时间了解了下 docker 容器,去尝试了下发现 mysql 就挂了,并且怎么样也启动不了了,后来发现是内存实在是不够了linux

后来网上了解,若是服务器的老是报告内存不足,而且时常由于内存不足而引起服务被强制kill的话,在不增长物理内存的状况下,启用swap交换区做为虚拟内存是一个不错的选择。固然这个选择是在你对访问速度和缓存那些没什么要求的状况下,好比你本身测试玩的redis

虚拟内存通常设置为物理内存的2倍便可sql

新增swap分区

这里使用文件做为swap分区 ,下面操做须要在root用户下操做docker

使用 free -h 查看当前内存占用状况,能够看到物理内存所剩无几,下面的swap也是使用的文件做为虚拟内存使用的vim

img

建立要做为swap分区的文件:增长1GB大小的交换分区,则命令写法以下,其中的count等于想要的块的数量(bs*count=文件大小),以下面是2G缓存

# dd if=/dev/zero of=/root/swapfile2 bs=1M count=2048服务器

  img

  这里我使用的of为/root/swapfile2 ,能够看到该文件是新建立的,这时候这个文件还不能直接使用为swap文件app

修改文件权限,如不修改,在启用swap文件的时候会提示下面信息(不影响使用,建议修改)测试

# chmod 0600 /root/swapfile2

  img

格式化为交换分区文件,创建swap的文件系统,/root/swapfile2须要与上面的of的值一致,这个目录能够自定义

# mkswap /root/swapfile2

  img

  

启用swap文件:

# swapon /root/swapfile2

  img

能够看到未启用时虚拟内存为2G,启用后内存增长了2G

使系统开机时自启用

# vim /etc/fstab

  img

在文件/etc/fstab中添加一行

/root/swapfile2 swap swap defaults 0 0

调整swap空间使用的优先级

  若是内存够大,应当告诉 linux 没必要太多的使用 SWAP 分区, 能够经过修改 swappiness 的数值。

  swappiness=0 的时候表示最大限度使用物理内存,而后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,而且把内存上的数据及时的搬运到swap空间里面。

  各个操做系统的优先级可能都不同,若是不调整,你会发现添加的虚拟内存几乎没有用到

  查看当前swappiness值

  # cat /proc/sys/vm/swappiness

  

  修改swappiness值为60(临时修改,重启后即还原为默认值)

  # sudo sysctl vm.swappiness=60

  img

  

  永久修改swappiness默认值(重启生效)

  # vim /etc/sysctl.conf

  找到vm.swappiness ,若是没有则须要手动添加一行 vm.swappiness = 60 保存便可

  img   

相关文章
相关标签/搜索