跳至内容

设置Swap区拯救内存不足的Linux机器

Karson Zhong · Posted on 2022-11-01 · 3 Views

[toc]

内存不足

内存不足十分令人烦恼,而且往往出现一些令人迷惑的表现。
在Linux系统上的表现为:

  • 输入输出延迟非常高
  • IO暴涨
  • 架设的网站返回502错误

设置Swap区一定程度上可以缓解内存不足。

设置Swap区

下面以CentOS7为例

检查内存与Swap区

free -h

返回如下:

  • available为最终可用的内存值
  • 如果你已经设置了Swap区,可以在下面找到Swap区的空间信息
              total        used        free      shared  buff/cache   available
Mem:           1.8G        766M        580M         20M        490M        894M
Swap:          4.0G        513M        3.5G

另外,如果你已有Swap区,以下命令可以查看Swap区的所在位置。

swapon -s
Filename                                Type            Size    Used    Priority
/swapfile                               file    4194300 526080  -2

注意:如果无Swap区,上面命令返回空白

检查剩余硬盘空间

Swap区用硬盘辅助内存进行缓存,设置Swap区前需要确保硬盘还有剩余空间。输入以下命令查看:

df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        909M     0  909M   0% /dev
tmpfs           919M     0  919M   0% /dev/shm
tmpfs           919M  572K  919M   1% /run
tmpfs           919M     0  919M   0% /sys/fs/cgroup
/dev/vda1        99G   16G   80G  16% /

为Swap区分配空间

/swapfile(或其它你喜欢的)目录下,使用dd命令为文件分配4G的连续空间。

sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB

然后可以查看该目录

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Nov  1 01:54 /swapfile

修改权限

我们不需要也不希望其它用户可以读取这个文件,因此运行以下命令取消权限:

sudo chmod 600 /swapfile

启动Swap区

sudo mkswap /swapfile
sudo swapon /swapfile

再次使用上节的命令,检查内存与Swap区,应该就可以看到新增的Swap区了。

Swap区持久化

为了重启之后保持Swap区开启,编辑/etc/fstab文件:

sudo vi /etc/fstab

在文件最后加入一行:

/swapfile   swap    swap    sw  0   0

修改Swap区的使用频率

设置了Swap区后,系统不一定会使用;又或者使用过猛,反而导致系统卡顿。
此时我们就需要修改Swap区的使用频率了。

如何控制使用率

Linux系统通过swappiness配置值确定Swap区的使用率。该值值域为[0, 100],越大表明使用的频率越高

查看swappiness

输入以下命令查看当前值:

cat /proc/sys/vm/swappiness

修改swappiness

临时

sudo sysctl vm.swappiness=60

其中60是你想要修改的值,该值只能根据经验确定。
这个效果会持续到你重启之前。

持久化

若需要持久化,我们还需要修改配置文件

sudo vi /etc/sysctl.conf

将文件内的配置改为如下:

vm.swappiness = 60

大功告成,如此一来你的系统就可以顺利使用Swap区了。

程序员,热衷于游戏开发和软件制作。但也是一个杂食动物,喜欢探索各种赛博相关的奇技淫巧。

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

Nova - rebirth of a wonderful theme.

Theme Nova by KarsonJo

  • Serif
  • Sans Serif
切换主题 | SCHEME TOOL
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
0
希望看到您的想法,请您发表评论x
0
希望看到您的想法,请您发表评论x