1、场景
闲来无事买了一个阿里云ecs服务器(乞丐版1核1G, Linux centos7), 今天操作docker容器时 , 一直报错:fatal error: runtime: out of memory
网上查询是内存不足溢出的原因, 于是看到可以使用设置虚拟内存的方式解决.
参考文章:https://my.oschina.net/u/2306127/blog/657269?p=
参考文章:https://www.jianshu.com/p/682c35ff1352
2、查看内存使用情况
free -m
虚拟内存空间竟然为0,这是因为阿里云ecs服务器默认关闭swap
3、创建虚拟内存磁盘卷
dd if=/dev/zero of=/swap/swapadd bs=1024 count=2024288
4、将磁盘卷转为虚拟内存卷
mkswap /swap/swapadd
5、启用虚拟内存服务
swapon /swap/swapadd
6、再来查看内存使用情况
多出来2G左右的swap空间。
7、关闭虚拟内存服务
swapoff -v /swap/swapadd
8、移动虚拟内存空间
如果当前的虚存所在的磁盘空间不够,可以首先关闭虚存服务,将其移动到别的磁盘,再启用即可。
swapoff -v /swap/swapadd
mv /swap/swapadd /mnt/swap
swapon /swap/swapadd
9、检查swap是否已打开
cat /proc/swaps #或者free -m
10、使系统开机时自启用,在文件/etc/fstab中添加一行:
/swap/swapadd swap swap defaults 0 0
11、配置系统采用虚拟内存的百分比
swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
vim /etc/sysctl.conf
在最后一行补充
vm.swappiness = 60
保存退出后执行命令:
sysctl -p
12、卸载删除
swapoff /swap/swapadd #卸载swap文件
并修改/etc/fstab文件 #从配置总删除
rm -rf /swap/swapadd #删除文件