Docker容器启动Mysql镜像报错,提示无法分配内存,报错信息如下:
由此我们看到Swap为0,考虑适当增加swap。
Linux开启swap空间有好几种方法,在这里只介绍比较常用的两种。
- 使用交换文件
这种方式适用于,已经装完系统但是没有多余分区可以用来做swap分区。 - 使用交换分区
这种方式适用于有多余的分区可以用来做swap分区。
使用交换文件开启Swap
a.创建交换文件
> fallocate -l 4G /swapfile 或 > dd if=/dev/zero of=/swapfile bs=1M count=4096
b.设置可访问权限
> chmod 600 /swapfile
c.格式化文件
> mkswap /swapfile
d.激活swap空间
> swapon /swapfile
f.开机自动启用swap空间
编辑/etc/fstab,在文件末尾添加:/swapfile none swap default 0 0
关闭 SWAP
当系统出现内存不足时,开启 SWAP 可能会因频繁换页操作,导致 IO 性能下降。
如果要关闭 SWAP,可以采用如下方法。
1、free -m #查询SWAP分区设置
2、使用命令swapoff 关闭 SWAP,比如:
swapoff /mnt/swapfile
3、修改 /etc/fstab 文件,删除或注释相关配置,取消 SWAP 的自动挂载:
4、 通过 free -m 确认 SWAP 已经关闭。
5、 swappiness 参数调整:
可以使用下述方法临时修改此参数,这里配置为 0%:
echo 0 >/proc/sys/vm/swappiness
若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf文件,并增加以下内容:vm.swappiness=0