子方有话
swap不是万能的,但没有swap万万不行!这一点上,阿里云做的不是很好。这也再一次印证了,厂商的默认镜像,都有你不知道而且数不清的坑!当时子方新开服务器,就简单的安装个lnmp网络环境,使用 mysql5.7+php7.4 ,却因为内存不够,安装进程一直被kill掉。正确的安装方式,子方已经整理出来了:阿里云ECS小内存通过lnmp一键包安装Mysql5.7全过程
swap交换分区与阿里云
有时候虽然配置了swap分区但是一直没有用到swap分区,阿里云典型案例!需要设置swappiness值!阿里云ecs默认是不使用swap,就算你增加了虚拟内存,也基本不会调用!
在子方下面的截图,就能看到,物理内存已经爆炸了,swap丝毫不动。
cat /proc/sys/vm/swappiness #查看swappiness值 sysctl vm.swappiness=60 #临时调整swappiness值为60 #永久调整方法,子方这边需要重启才正常调整,也有一个命令用于更新的,不需要重启 nano /etc/sysctl.conf vm.swappiness = 20
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60
创建swap的方法
fallocate -l 4G /swap #创建交换分区文件 chown root:root /swap #设置交换分区所属 chmod 0600 /swap #设置交换分区权限 mkswap /swap #设置交换分区文件 swapon /swap #启用交换分区文件 echo '/swap swap swap defaults 0 0' >> /etc/fstab #挂载交换文件开机启动
一般建议swap交换分区是内存的1~2倍,编译过程中需要内存大,就多给一点。子方在编译mysql5.7的时候,swap交换分区在高峰时使用了将近1G。有朋友说。MySQL 8 编译过程中,实际需要 6G 以上的内存。