增加Swap交换分区,解决discourse内存占用过高的问题

最近有一台 VPS 一直报内存占用太高,所以想看看 Linux Swap 交换分区功能,用硬盘空间换内存空间。
本文分享下 Linux 中 Swap 交换分区设置教程,以及我们在设置 Swap 分区时,如何决定 Swap 的大小。

一、Swap 分区是什么
Swap(Swap 分区、Swap 内存),中文名是交换分区,类似于 Windows 中的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
因此,Swap 分区的作用就是牺牲硬盘,增加内存,解决 VPS 内存不够用或者爆满的问题。

二、Swap 分区大小选择
Swap 合理的大小是与 VPS 的物理内存有关的,目前老王找到一个比较靠谱的关系表(Red Hat Enterprise Linux):
内存 <= 4g:Swap 至少 4G
内存 4~16G:Swap 至少 8G
内存 16G~64G:Swap 至少 16G
内存 64G~256G:Swap 至少 32G
老王有一台 2GB 的 VPS,最开始 Swap 是 2GB,后来升级成了 4GB,内存占用明显减少。

三、Swap 分区设置教程
1.查看 Linux 当前分区情况:
free -m
如果是增加 swap 分区,则先把当前所有分区都关闭了:
swapoff -a

2.创建要作为 Swap 分区文件(其中 /var/swapfile 是文件位置,bs*count 是文件大下,例如以下命令就会创建一个 4G 的文件):
dd if=/dev/zero of=/var/swapfile bs=1M count=4096

3.建立 Swap 的文件系统(格式化为 Swap 分区文件):
mkswap /var/swapfile

4.启用 Swap 分区:
swapon /var/swapfile

5.查看 Linux 当前分区:
free -m
如果有 Swap 就说明创建成功了:
v2-f1decbb7172b18fe3e43e982276bd6ff_r

6.设置开启启动,在 /etc/fstab 文件中加入一行代码:
/var/swapfile swap swap defaults 0 0