服务器swap策略调优,vm.swappiness生产服务器

生产服务器上 swap 怎么配、vm.swappiness 设多少,是很多 Linux 运维新手都会纠结的问题。
本文先给出结论:常规生产服务器建议设置为 10;
内存足够且业务稳定时,可以设为 0 或 1,但要留意 OOM 风险。
下面会讲清原理、查看方法、永久修改步骤和常见避坑点。

swap 和 vm.swappiness 是什么

swap 是磁盘上的交换空间,当物理内存不足时,系统会把不常用的内存页换到 swap 上。
vm.swappiness 控制内核倾向使用 swap 的程度,取值范围 0 到 100。
值越大,系统越积极使用 swap;
值越小,越优先保留物理内存。

先查看当前服务器的 swappiness 值

登录服务器,执行:

sysctl vm.swappiness

或直接查看:

cat /proc/sys/vm/swappiness

这两条命令的输出就是当前生效值,不需要修改任何配置就能看到。

生产服务器建议值怎么选

没有绝对统一的值,需要按内存和业务情况判断:

  • 物理内存充足(8G 以上),业务无明显内存尖峰:建议设为 10,保留一定 swap 兜底。
  • 物理内存较小(2G 以下),且用 Java、MySQL 等内存大户:建议设为 1 或 10,不要直接设 0,否则内存瞬间不够时容易触发 OOM。
  • 对延迟敏感、内存完全够用、且确认没有突发内存需求:可以设为 0 或 1,减少 swap 读写带来的磁盘 IO 干扰。

这里给一个可复用的建议:第一次调优先设为 10,观察一周,如果 swap 使用量依然很高,再往 1 或 0 调整;
如果频繁 OOM,则要把值调大或升级内存。

永久修改 vm.swappiness 的步骤

临时修改重启后失效,生产环境要写入配置文件。

编辑 /etc/sysctl.conf

vim /etc/sysctl.conf

在文件末尾加入:

vm.swappiness=10

保存后让配置立即生效:

sysctl -p

再次确认生效:

sysctl vm.swappiness

输出为 vm.swappiness = 10 即修改成功。

也可以使用 echo 10 > /proc/sys/vm/swappiness 临时生效,但只推荐测试环境使用。

调优后的验证和避坑

修改后重点看两个指标:

free -h

观察 Swap 行的 usedsi/so(swap in/out)。
长期出现大量 swap 读写,说明物理内存仍紧张,需要结合业务排查。

常见误区有三个。
第一,把 swappiness 设成 0 并不等于禁用 swap,大量内存压力下系统仍可能使用 swap。
第二,不能只调 swappiness 不处理内存泄漏,先通过 topps aux --sort=-%mem 找出占用最高的进程。
第三,云服务器如果使用的是本地盘或机械盘,swap 读写会拖慢整体性能,建议在内存充足时压低 swappiness。

如果你不确定当前业务适合什么值,先从 10 开始,结合监控观察一周再微调。
相比直接照搬网上“设为 0”的说法,分步验证更安全。

分享到:
上一篇
Ubuntu24.04内核参数全套调优
下一篇
MySQL数据库锁等待超时,show
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意