Ubuntu 开启 Swap 缓解死机问题

Ubuntu 开启 Swap 缓解死机问题

June 19, 2023
分享 ,

之前有提到过我的腾讯轻量云小鸡 频繁爆内存卡死 的情况,之前也想过一些办法处理,比如:停掉一些不用的服务、检查了是不是 docker 更新容器太多卡等等。不过都没有解决这个问题。

前几天找其他资料时偶然看到了一个添加 Swap 缓存文件的命令,所以我想是不是腾讯轻量云在安装 Ubuntu 的时候不会自动开启 Swap 功能呢?

在 SSH 中输入 top ,然后按一下 m 键就能查看内存的占用情况。

果然,Swap 部分显示 0/0 ,没有 Swap 文件(截图是开启后的样子)。之后我通过相关的资料开启了 Swap 后运行了一个多星期,以前爆内存卡死的情况已经没有发生,实测有效。

和我一样有内存不够死机情况的朋友们或者想优化服务器性能的朋友都可以试试看。

top 命令显示系统各项占用情况

Swap 是什么

Swap 分区(也称交换分区)是硬盘上的一个区域,被指定为操作系统可以临时存储数据的地方,这些数据不能再保存在 RAM 中。 基本上,这使您能够增加服务器在工作 “内存” 中保留的信息量,但有一些注意事项,主要是当 RAM 中没有足够的空间容纳正在使用的应用程序数据时,将使用硬盘驱动器上的交换空间。

其实在 Windows 中也有这个功能,早期 XP 时代玩电脑优化的朋友应该都设置过,不过以前折腾 Windows 的时候感觉设置这个的作用微乎其微。

Ubuntu 如何开启 Swap

具体命令如下

#创建一个空文件,具体大小的话对于小内存机器建议为内存的两倍 (例子中 1K * 4M = 4 GiB).
sudo mkdir -v /var/cache/swap
cd /var/cache/swap
sudo dd if=/dev/zero of=swapfile bs=1K count=4M
sudo chmod 600 swapfile

#将新建的文件转换为 swap 文件.
sudo mkswap swapfile

#开启 swap.

sudo swapon swapfile

#通过 swapon 或者 top 命令进行验证:
swapon -s
#或者
top -bn1 | grep -i swap
#会显示类似信息: KiB Swap: 4194300 total, 4194300 free

#禁用 swap 时可以使用 sudo swapoff swapfile.

#将该分区设置成开机加载.
echo "/var/cache/swap/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab

#测试开机加载:
sudo swapoff swapfile
sudo swapon -va
Ubuntu 添加 swap 分区的方法 - 腾讯云开发者社区 - 腾讯云
前段时间上车了腾讯云 360 买三年多的学生机的活动,加上降配总共获得 6 年,然而内存降到 1G 后,跑个 mysql 时间长了内存都不够。而且腾讯云的 ubuntu 不知道什么原因 1G 内存实际只有 800+M,更加雪上加霜。

End

加入评论