添加 Linux 的虚拟内存(swap)并启用 EarlyOOM 以避免系统无响应

转载自:添加 Linux 的虚拟内存(swap)并启用 EarlyOOM 以避免系统无响应 – CodeZhangBorui’s Blog

在 Linux 的默认策略中,当物理内存被完全耗尽后,系统才会触发 OOM Killer 操作,这通常会导致系统变得非常缓慢甚至完全无响应。对此,我们通过启用虚拟内存和 EarlyOOM 的方式优化系统的内存行为。

温馨提示:本教程配套操作视频,教程视频中文本均可直接从视频中复制,请放心食用。

启用虚拟内存(swap)

首先,我们查看一下系统已经启用的物理内存和虚拟内存。

在终端执行:

free -h

Mem 代表物理内存,Swap 代表虚拟内存。

下面是 RedHat 推荐的虚拟内存大小表(在本地硬盘容量充足的情况下):

物理内存大小推荐的虚拟内存大小如果启用休眠,推荐的虚拟内存大小
< 2GB2 倍物理内存3 倍物理内存
2GB – 8GB与物理内存相同2 倍物理内存
8GB – 64GB至少 4GB1.5 倍物理内存
> 64GB至少 4GB(不推荐启用休眠)

你可以根据自己的机器情况选择需要的虚拟内存大小。

下一步,我们来创建虚拟内存文件并启用,在终端执行(请将虚拟内存大小更改为你需要的大小):

sudo dd if=/dev/zero of=/swapfile bs=1M count=<虚拟内存大小(单位:M,1G=1000M)>
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

默认情况下,Linux 不会自动在开机时自动挂载虚拟内存文件,为此,请使用你熟悉的文本编辑器编辑 /etc/fstab,并在文件末尾添加:

/swapfile swap swap defaults 0 0

安装并启用 EarlyOOM

EarlyOOM 可以在内存占用超过 90%(可更改设置)时提前触发 OOM Killer,杀死内存占用过大的进程,以防止内存完全耗尽后造成系统无响应。

对于 Debian 系列(Debian、Ubuntu),在终端执行:

sudo apt install earlyoom
sudo systemctl enable --now

5 1 投票
文章评分
1 评论
内联反馈
查看所有评论
氧化某人
1 月 前

前排支持

1
0
本文贡献者正期待您发表意见x
滚动至顶部