服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-20 简米科技 3,353 字 8 分钟阅读

云服务器Swap分区有必要开启吗,Swap交换分区作用及设置

导读在云服务器中,是否开启 swap 交换分区取决于内存负载与业务特性,通常建议内存充足时关闭以提升性能,内存紧张时适量开启作为应急缓冲,但不应依赖 swap 替代物理内存扩展,不少初次接触云服务器的用户,面对系统默认的 swap 配置,常常拿不准是该保留还是禁掉,这个问题的答案并不绝对,因为 swap 在物理机时……

在云服务器中,是否开启 swap 交换分区取决于内存负载与业务特性,通常建议内存充足时关闭以提升性能,内存紧张时适量开启作为应急缓冲,但不应依赖 swap 替代物理内存扩展。

不少初次接触云服务器的用户,面对系统默认的 swap 配置,常常拿不准是该保留还是禁掉,这个问题的答案并不绝对,因为 swap 在物理机时代是内存不足的救星,但到了云环境里,它却可能成为拖累磁盘 I/O 的隐形杀手,下面从实际场景出发,拆解 swap 的取舍逻辑和具体操作。

云服务器 swap 开启还是关闭?不同场景下的选择

swap 的本质是用磁盘空间模拟内存,当物理内存不够时,系统会把不活跃的内存页换到磁盘上,腾出空间给活跃进程,在云服务器上,磁盘通常是云盘,性能远低于本地 SSD,而且云盘的 IOPS 和带宽都有上限,swap 频繁读写,会直接拉高磁盘延迟,进而影响整体应用响应速度。

内存充足时:关闭 swap 更稳妥

如果你的云服务器内存使用率常年低于 70%,且业务没有突发高峰,直接关闭 swap 是最干净的做法,系统不会因为内核触发 swap 而浪费 CPU 资源在换入换出上,磁盘 I/O 也能完全留给业务日志、数据库读写等核心操作,多数云厂商在默认镜像里已经把 swap 关掉了,正是基于这个考虑。

具体操作:

  • 查看当前 swap 状态:free -hswapon --show
  • 临时关闭:swapoff -a
  • 永久关闭:编辑 /etc/fstab,找到包含 swap 的行,整行注释掉或删除,然后重启或 swapoff -a 生效。

内存紧张时:swap 可以作为应急手段

如果应用长期占用 80% 以上内存,或者你跑的是低配实例(1GB、2GB 内存),又想临时应付峰值流量,适当开启 swap 能避免 OOM(内存溢出)导致进程被系统杀掉。行业共识认为,在这类场景下 swap 可以充当最后的保险丝,但必须控制其大小和利用频率。

云服务器Swap分区有必要开启吗,Swap交换分区作用及设置

建议:

  • swap 大小设置为物理内存的 1 到 2 倍,但不要超过 4GB,否则磁盘空间浪费大且换入换出效率急剧下降。
  • 调整 swappiness 参数,控制内核使用 swap 的积极程度,默认值 60,在云服务器上建议降到 10 或 0,只有当内存真的快耗尽时才触发 swap。

设置方法:

echo 10 > /proc/sys/vm/swappiness

要永久生效,在 /etc/sysctl.conf 中添加 vm.swappiness=10

数据库等高性能场景:swap 能避则避

数据库(MySQL、PostgreSQL、Redis)对内存和磁盘 I/O 极其敏感,swap 一旦被触发,数据页的换入换出会导致查询延迟从毫秒级飙到秒级。业内专家指出,在数据库实例上开启 swap 几乎等同于主动降级性能,如果你遇到数据库响应变慢,先检查 swap 使用情况,很可能就是 swap 在搞鬼。

对于这类场景,正确做法是:

  • 根据业务峰值预留足够内存,或使用云厂商的弹性伸缩服务自动扩容。
  • 如果预算有限,可以关闭 swap 并调整 vm.overcommit_memory 为 2,严格控制内存分配,避免过度申请导致 OOM。

云服务器内存不足怎么办?试试 swap 之外的这些方法

当内存持续告警,靠 swap 只能治标不治本,更合理的思路是优化应用或调整资源,这也是很多人在百度搜索“云服务器内存不足怎么办”时真正想找的答案。

升级实例规格

最直接的方案是升级云服务器配置,增加内存容量,现在国内主流云厂商(简米云、酷番云、华为云)都支持在线升级,停机几分钟即可完成,无需迁移数据,虽然涉及额外费用,但相比业务中断的损失,这点投入往往是值得的。

优化应用内存占用

  • 检查是否存在内存泄漏:用 topps aux --sort=-%mem 找到高内存进程,结合业务日志处理。
  • 云服务器Swap分区有必要开启吗,Swap交换分区作用及设置

  • 调整数据库缓存参数:MySQL 的 innodb_buffer_pool_size,建议设为物理内存的 60%-70%,留出余量给系统。
  • 减少不必要的缓存:有些应用内置了重复缓存,清理后内存占用明显下降。

使用云服务商的弹性内存方案

部分云厂商提供内存增强型实例,或支持开启内存超分(如容器场景),如果你用的是 KVM 架构的云服务器,还可以通过 virtio 驱动动态调整内存,无需重启,这些方案都比 swap 更高效,适合对性能有要求的用户。

云服务器 swap 分区大小与 swappiness 最佳实践

swap 一旦决定开启,容量和触发策略就至关重要,设置不当,轻则浪费磁盘,重则拖垮性能。

分区大小推荐

物理内存大小 建议 swap 大小 说明
1GB 及以下 1-2GB 低配实例,用于应急,避免 OOM
2GB-4GB 2-4GB 中等负载,建议同时调低 swappiness
8GB 及以上 0-2GB 内存充足,可关闭或仅设 1GB 作为保险

注意,云服务器上 swap 不建议超过 4GB,因为云盘 IOPS 有限,容量再大也无法有效利用,反而占用磁盘空间,如果你的业务需要频繁使用 swap,说明内存已经严重不足,应该考虑升级而不是增加 swap。

swappiness 调整策略

swappiness 取值范围 0-100,0 表示除非内存绝对不足,否则不换出;100 表示积极使用 swap,在云服务器上,推荐设置:

  • 内存充足:设置为 0 或 1,完全避免 swap 干扰。
  • 内存紧张:设置为 10-20,让内核尽量用物理内存,仅在最极端时启用 swap。
  • 数据库等应用:设置为 0,并配合 vm.vfs_cache_pressure=200 加快缓存回收,减少内存压力。

表格对比:开启 swap 与关闭 swap 的差异

云服务器Swap分区有必要开启吗,Swap交换分区作用及设置

对比维度 开启 swap 关闭 swap
内存利用率 可支撑暂时超售,但牺牲性能 严格限制在物理内存内,风险是 OOM
磁盘 I/O 影响 增加额外读写,可能拉高延迟 完全无影响,磁盘性能稳定
业务稳定性 避免进程被 OOM killer 杀死 内存不足时应用直接崩溃
运维复杂度 需监控 swap 使用量和 swappiness 简单,只需关注内存水位
适用场景 低配实例、突发流量、测试环境 生产环境、数据库、高并发服务

Q&A:云服务器 swap 相关常见问题

云服务器 swap 开启后如何确认是否生效?

使用 free -h 查看 Swap 行,total 字段不为零且 used 有数值,说明 swap 已启用,同时可以用 swapon --show 查看具体设备和优先级。free -h 显示 total 为 0,表示 swap 未开启或已关闭。

云服务器 swap 分区大小设置后还能改吗?

可以,swap 是磁盘分区形式,需要重新分区并格式化,操作较麻烦,更简单的方法是使用 swap 文件,大小可以随时调整,适合云服务器场景,创建一个 swap 文件:dd if=/dev/zero of=/swapfile bs=1M count=2048(2GB),mkswap /swapfileswapon /swapfile,最后写入 /etc/fstab 永久生效,修改时只需删除旧文件重新创建,无需格式化。

云服务器内存不足时,swap 和 OOM 哪个更影响业务?

OOM killer 直接杀死进程,导致服务中断,影响立竿见影,swap 则让系统变慢,但应用可能还能勉强响应,适合追求服务不中断的场合,swap 导致的性能下降如果持续过久,同样会让用户感知到超时。短期应急用 swap,长期解决靠升级内存或优化应用,这是多数云服务器运维者的共识。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱