### [VPS要不要加Swap?先看OOM、磁盘延迟和工作集,再决定大小](https://www.jiyueip.com/article/13252) **Published:** 2026-07-29T14:56:04 **Author:** 斑斓助理 **Excerpt:** Swap能缓冲短时内存压力,但不是额外的高速内存。本文从OOM证据、磁盘条件和工作集判断是否需要Swap,并给出Linux交换文件的创建、验证、持久化与安全回滚步骤。 VPS要不要加Swap,答案不是“内存小就开、内存大就关”。Swap使用磁盘保存暂时不活跃的内存页,能在短时峰值中争取恢复时间,却无法替代真实内存。若系统持续换入换出,服务通常会明显变慢;若磁盘空间紧张或IO本来就满,盲目加Swap还会放大故障。 ## 先用四组证据判断 执行`free -h`和`swapon --show`确认当前内存与交换空间,再用`vmstat 1`观察一段真实负载。重点不是“used看起来很高”,而是可用内存是否长期接近耗尽、`si`/`so`是否持续活动、业务延迟是否同步上升,以及内核日志中是否出现OOM记录。 | 现象 | 判断 | 优先动作 | | --- | --- | --- | | available充足、无OOM | 暂时没有明显内存压力 | 不为凑配置强行增加 | | 短时峰值触发OOM | Swap可能提供缓冲 | 同时限制峰值并保留告警 | | 持续大量si/so且服务变慢 | 工作集超过物理内存 | 优化或扩容,不靠加大Swap拖延 | | 磁盘空间或IO紧张 | Swap可能争抢关键IO | 先解决磁盘容量和延迟 | | 单个容器被OOM杀死 | 可能是cgroup限制 | 先核对容器内存上限 | 如果已经看到“Killed process”或容器退出,先按[VPS OOM Killer排查方法](https://www.jiyueip.com/article/8553)确认故障层级。Swap只能改变系统面对压力时的行为,不能修复应用泄漏、无限并发或错误的容器配额。 ## Swap该设多大没有固定倍数 “物理内存的两倍”不是所有VPS都适用的公式。大小取决于短时峰值缺口、是否需要休眠、磁盘容量、存储延迟和恢复目标。服务器通常不需要桌面休眠;如果只是希望在告警和人工处理之间留出缓冲,可以从能够覆盖已观察峰值的小容量开始,再根据换页量调整。 当正常工作集长期超过物理内存时,无论Swap设成1GB还是8GB,都只是把内存不足改成磁盘等待。此时应减少进程与缓存上限、修复泄漏、错开批处理,或者扩容真实内存。 ## 创建前的安全检查 - 确认虚拟化和服务商允许使用Swap,容器内部可能没有创建权限; - 用`df -h`检查目标文件系统有足够余量,避免占满根分区; - 确认当前没有同名文件或已有Swap,避免覆盖业务数据; - 保留可用SSH会话,并确保配置错误时能通过控制台救援; - 先记录`/etc/fstab`和当前`sysctl`设置,便于回滚。 ## 用交换文件逐步配置 以下示例创建一个1GiB交换文件。容量只是演示,应按前面的证据决定;所有命令都需要具备相应管理权限。 ``` sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile swapon --show free -h ``` 如果当前文件系统不支持`fallocate`生成可用交换文件,应查阅该系统和文件系统文档,改用其支持的方法;不要在不了解现有磁盘布局时创建或重分区。`chmod 600`用于限制其他用户读取可能被换出的内存内容。 ## 持久化前先验证 确认`swapon --show`列出正确路径和容量后,再在`/etc/fstab`加入: ``` /swapfile none swap sw 0 0 ``` 编辑后可用`sudo findmnt --verify`检查`/etc/fstab`,或者先执行`sudo swapon -a`并确认没有报错;随后在安排好的维护窗口重启验证。`mount -a`主要处理常规文件系统挂载,并不能代替Swap条目的专项检查。没有远程控制台或回滚路径时,不要把未经验证的配置留到下次启动。 ## swappiness控制什么 `vm.swappiness`影响内核在内存回收时使用Swap的倾向,但它不是“使用百分比”,也不存在适合所有业务的神奇数值。先查看当前值: ``` sysctl vm.swappiness ``` 如需调整,先用临时设置观察业务,再写入独立的`/etc/sysctl.d/`配置文件。数据库、搜索服务和延迟敏感程序可能更在意换页停顿;批处理与低频服务的容忍度不同。每次变更都要同时观察响应时间、磁盘延迟、Swap使用量和OOM事件。 ## 怎样确认Swap真的在帮忙 有Swap并不等于问题解决。至少对照变更前后的四项:OOM是否减少、`vmstat`中的持续换页是否受控、磁盘IO等待是否上升、业务高分位延迟是否恶化。只看到“进程没被杀”但网站长时间无响应,不是理想恢复。 新购VPS还应先建立配置与磁盘基线,相关步骤可参照[VPS购买后的验收清单](https://www.jiyueip.com/article/13234)。超售、慢盘或根分区太小都会改变Swap的风险边界。 ## 如何安全移除或缩小Swap 移除前先确认物理内存有足够空间承接换出的页面,并在低负载窗口执行: ``` sudo swapoff /swapfile swapon --show ``` 确认Swap已停用后,从`/etc/fstab`删除对应条目;是否删除文件,应在再次核对绝对路径和备份后决定。若`swapoff`因内存不足失败,不要强制继续,应先停止非关键服务或增加内存。 ## 结论 Swap的价值是为短时峰值和故障处理争取空间,不是把磁盘变成同等性能的内存。先确认OOM与工作集证据,评估磁盘余量和延迟,再小步创建、验证、持久化并监控;如果系统长期频繁换页,正确方向通常是优化负载或扩容。 **Tags:** Linux服务器, VPS, VPS性能, 云服务器, 服务器运维 **Categories:** 网络技术 ---