Linux 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 长期被用满时,升级内存或优化应用才是正解。
- 点赞
- 收藏
- 关注作者
评论(0)