Linux Swap 配置与调优:小内存云服务器的实用指南

举报
yd_222406226 发表于 2026/10/25 18:49:03 2026/10/25
【摘要】 对于内存只有 1GB、2GB 的小内存云服务器,Swap(交换空间)是最常见也最容易被误解的配置之一。它到底该不该开、开多大、怎么调?本文结合日常运维经验讲清楚。一、Swap 是什么Swap 是硬盘上划出的一块区域。物理内存不足时,内核会把暂时不用的内存页换出到 Swap,腾出内存给更急需的进程。它不能替代内存——Swap 读写比内存慢几个数量级,频繁换入换出反而会拖垮整机。它的真正价值是给...

对于内存只有 1GB、2GB 的小内存云服务器,Swap(交换空间)是最常见也最容易被误解的配置之一。它到底该不该开、开多大、怎么调?本文结合日常运维经验讲清楚。

一、Swap 是什么

Swap 是硬盘上划出的一块区域。物理内存不足时,内核会把暂时不用的内存页换出到 Swap,腾出内存给更急需的进程。它不能替代内存——Swap 读写比内存慢几个数量级,频繁换入换出反而会拖垮整机。它的真正价值是给偶发内存峰值留缓冲,避免进程因 OOM(内存耗尽)被内核直接杀掉。

判断是否需要 Swap,先看现状:free -h 查看内存与 Swap 使用量,swapon --show 查看已启用的交换区,vmstat 1 观察 si(换入)、so(换出)两列。如果内存经常用到 90% 以上、且偶有进程被 OOM Killer 杀掉,加 Swap 往往比升级内存更划算。

二、用交换文件开通 Swap

传统做法是单独分交换分区,但对已运行的云服务器,交换文件(swapfile)更灵活:不用重分区,大小随时可调。流程如下:

先创建 2GB 文件:fallocate -l 2G /swapfile;若文件系统不支持 fallocate,可改用 dd 命令生成,只是速度较慢。接着收紧权限 chmod 600 /swapfile——这一步不能省,交换文件可能包含内存页的敏感内容。然后格式化并启用:mkswap /swapfile && swapon /swapfile。最后在 /etc/fstab 追加一行"/swapfile none swap sw 0 0",保证重启后自动挂载。

Swap 大小没有绝对标准。经验法则是:2GB 以下内存配 1~2 倍内存,4GB 以上配 1~2GB 应急即可。对小站点而言 2GB Swap 已经足够;配得过大既浪费磁盘,也容易掩盖真正的内存泄漏——如果 Swap 长期被用满,正确的动作是查进程、修泄漏,而不是继续加 Swap。

三、调优 swappiness

内核参数 vm.swappiness(0~100)决定内核使用 Swap 的积极程度。默认值 60 对桌面尚可,但对服务器一般偏高:它会让内核较早把应用内存页换出,换来更多文件缓存,代价是应用偶尔变慢。服务器场景通常调到 10~30:sysctl -w vm.swappiness=10 临时生效,写入 /etc/sysctl.conf 永久生效。

四、监控与误区

配好后定期看两点:一是使用量,free -h 里 Swap used 长期居高不下说明内存确实吃紧;二是换页频率,vmstat 的 si/so 持续大于 0 说明系统已在频繁换页,这时加 Swap 治标不治本,应优化应用或升级内存。

还要避开几个误区:Swap 不是越大越好,过大的 Swap 会让系统在换页上卡几分钟才最终崩溃;云盘的 Swap 读写会计入磁盘 IO,生产环境应以监控数据为准。

五、补充手段:zram

内存实在紧张时,还可考虑 zram:把一部分内存压缩后当作 Swap 设备,换页速度远快于磁盘,适合内存小、CPU 有富余的场景。不过 zram 同样不能无中生有内存,压缩本身也要消耗 CPU,只能作为辅助。

总结:Swap 的正确姿势是"有,但不大;会用,但不依赖"。先看现状,再用交换文件灵活开通,配合 swappiness 调优和 vmstat 监控,小内存服务器也能跑得稳当。当 Swap 长期被用满时,升级内存或优化应用才是正解。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。