用心打造
VPS知识分享网站

VPS内存不够时应该加Swap吗?怎么设置才合适?

1核2G 或 2核2G 的 VPS 跑 WordPress、Docker 和数据库时,内存经常比 CPU 更早到达极限。内存用完后,服务可能突然被系统终止,网站直接出现 502。

不少教程会让新手马上添加 Swap,甚至照着物理内存的两倍来设置。Swap 确实能缓冲短时内存压力,但它使用的是磁盘,速度远低于真正的内存,设置得再大也不能把小内存 VPS 变成高配服务器。

VPS Swap内存交换空间示意图

今天这篇文章就来聊聊,VPS 什么情况下需要 Swap、设置多大更合适、如何创建 Swap 文件,以及哪些业务不应该依赖 Swap 硬撑

一、Swap到底有什么用?

Swap 是 Linux 使用的交换空间,可以是独立分区,也可以是普通磁盘上的交换文件。当物理内存紧张时,内核会把暂时不活跃的内存页面转移到 Swap,为更需要内存的进程腾出空间。

它最大的价值是给系统留一层缓冲。没有 Swap 的小内存 VPS,一旦瞬间超出内存上限,可能很快触发 OOM Killer,数据库、PHP-FPM 或 Node.js 进程会被强制终止。

但 Swap 的读写速度受磁盘影响。Swap 是防止内存瞬时耗尽的安全垫,不是物理内存的平替

二、哪些VPS适合添加Swap?

比较适合添加 Swap 的场景有这些:

  1. 1GB—4GB 内存的小型 VPS,需要承受偶发流量或定时任务。
  2. WordPress、MySQL、Docker 等服务存在短时内存峰值。
  3. 系统偶尔触发 OOM,但日常可用内存仍有余量。
  4. 编译、更新或备份时会短暂占用更多内存。

如果内存长期接近 100%,Swap 一直被大量读写,说明配置已经不适合当前业务。继续扩大 Swap 只会让服务从崩溃变成持续卡顿。

三、先检查服务器有没有Swap

运行下面两个命令:

free -h
swapon --show

free -h 会显示内存和 Swap 的总量、已用量;swapon –show 可以看到当前启用的交换分区或文件。

还可以检查最近是否发生过 OOM:

journalctl -k | grep -i -E "oom|out of memory|killed process"

看到 Killed process 不要只补 Swap,还要确认是哪个进程增长过快,是否存在内存泄漏或配置错误。

四、Swap设置多大比较合适?

过去常见的两倍内存规则并不适合所有 VPS。现代 Linux 更应该根据业务负载、磁盘性能和内存峰值来决定。

物理内存 小型网站建议Swap 说明
1GB 1GB—2GB 防止更新、编译和数据库峰值
2GB 1GB—2GB 多数轻量业务够用
4GB 1GB—2GB 以应急缓冲为主
8GB以上 0GB—2GB 根据业务判断

数据库或高并发业务不能只套表格。内存峰值大、磁盘 IO 慢时,Swap 太多会造成明显延迟。小型 VPS 先从 1GB 或 2GB 开始,比直接创建超大 Swap 更稳妥

五、Ubuntu和Debian怎么创建Swap文件?

先确认磁盘有足够空间,然后创建一个 2GB 的交换文件:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

检查是否启用:

swapon --show
free -h

想让重启后继续生效,在 /etc/fstab 中加入:

/swapfile none swap sw 0 0

修改 fstab 前最好先创建快照或备份。路径或格式写错可能影响系统启动。

六、swappiness应该怎么设置?

vm.swappiness 控制内核使用 Swap 的倾向,但它不是简单的百分比开关。先查看当前值:

cat /proc/sys/vm/swappiness

小型网站可以从 10—20 观察。临时设置为 10:

sudo sysctl vm.swappiness=10

想持久生效,可以在 /etc/sysctl.d/99-swappiness.conf 写入:

vm.swappiness=10

设置为 0 也不等于完全禁用 Swap。内核文档说明,0 会显著降低主动换出倾向,但在内存压力下仍可能使用。

七、哪些情况不应该依赖Swap?

实时数据库、游戏服务、交易程序和延迟敏感 API,一旦频繁访问 Swap,响应时间会明显抖动。这些业务更需要足够的物理内存。

NVMe 磁盘能减轻一部分等待,但仍然比 RAM 慢。Swap 持续增长、si 和 so 长期有数据、系统频繁卡顿时,应先优化程序或升级内存。

需要升级配置时,关注能否平滑扩容、是否支持快照以及节点稳定性。可以对比 萤光云LightNode 的配置调整方式,再按监控数据决定,而不是因为一次峰值直接买高配。

八、我的实际建议

对 1GB—2GB 的 VPS,我通常会保留少量 Swap,但同时设置内存告警。Swap 偶尔使用没有问题,长期占用并持续换入换出才值得警惕。

每次增加 Swap 后,都要继续观察 free -h、vmstat 1 和服务日志。能避免 OOM 不等于性能正常,服务器是否频繁等待磁盘才是下一步重点

常见问题

问:添加Swap需要重启VPS吗?
答:不需要,执行swapon后即可生效。

问:Swap越大越好吗?
答:不是,过大不能替代内存,还可能掩盖瓶颈。

问:SSD做Swap会损坏硬盘吗?
答:偶尔使用影响有限,持续大量写入需要重视。

问:Docker容器可以使用宿主机Swap吗?
答:取决于容器限制和宿主机cgroup配置。

问:如何删除Swap文件?
答:先swapoff,再删除fstab条目和文件。

温馨提示

创建 Swap 之前先确认内存为什么不足。插件过多、数据库缓存过大、PHP-FPM 进程数不合理和程序内存泄漏,都可能让 Swap 很快被占满。

更稳妥的顺序是:先定位内存消耗,再设置少量 Swap 作为缓冲,最后根据连续监控决定优化还是升级内存

赞(0)
未经允许不得转载;国外VPS测评网 » VPS内存不够时应该加Swap吗?怎么设置才合适?
分享到