通过设置swap分区避免爆内存卡死
前言
事情的起因都是因为本人图便宜,在*里云看到了学生优惠券300元然后花了100多买了一台2h1g的轻量云服务器主要看中它200M的峰值带宽了。后面在服务器中安装了1Panel,结果发现系统总是卡死,之后换了debain成功打开了1Panel的web页面,但是安装完mysql后依旧卡死。情况比较严重,基本上重启即死机。就在我万分苦恼之际,我想起了虚拟内存就是它—-swap。
创建swap分区
1.创建一个文件作为swap分区
sudo fallocate -l 2G /swapfile
-l, --length <size>:指定预分配的空间大小,单位可以是B、K、M、G等。-o, --offset <offset>:指定预分配的起始位置,单位是字节。-z, --zero-range:在预分配的空间内填充零值。
这里创建空间大小为2G的swap分区,我的云服务器内存是1G的,一般来说swap分区大小是要小于2倍内存大小的,实测服务器运行时最高占用swap分区的空间大小大致是700mb
2.设置swap文件权限
sudo chmod 600 /swapfile
3.将文件格式化为swap文件
sudo mkswap /swapfile
4.启用swap分区
sudo swapon /swapfile
5.验证是否创建成功
sudo swapon -s
6.设置自动启用swap分区
sudo nano /etc/fstab
7.在文件末尾插入
/swapfile none swap sw 0 0
ctrl+o写入
enter
ctrl+x退出
额外的配置·swappiness
一开始我没有配置swap分区调用的优先值,还是出现过系统卡死的情况,所以对于内存小的云服务器来说调整swappiness的值是必要时的。
1.使用nano打开sysctl.conf文件
sudo nano /etc/sysctl.conf
2.在文件末尾插入
vm.swappiness=70
swappiness的值为0-100,值越高使用swap分区越激进,我这里只有1g内存,所以必须激进使用swap分区才能避免卡死,因此我将swappiness的值调为了70。