最近我在测试 JustHost 家各个机房的机器。大家都知道,JustHost 这个俄罗斯商家的卖点很明确:机房多(全球 50 多个机房)、无限流量、价格便宜。但我发现其 Ubuntu 系统是没有配置 Swap(交换分区)的。
以我手里这台 VPS 为例,只有 1GB 内存,装个 WordPress 跑着跑着就开始卡顿,有时候直接内存不足被系统杀进程(OOM)。简单说,就是系统为了自保,会随机杀掉最占内存的进程。这对于建站来说体验实在太差了。
其实这个问题不难解决,加个 Swap 就能缓解不少压力。今天就跟大家聊聊怎么在 JustHost 上配置 Swap 交换文件。
配置 Swap 前的准备工作
在动手之前,有几个基本概念需要先搞清楚。
为什么会卡顿和 OOM?
以 WordPress 这种动态网站为例,PHP 要运行、MySQL 要查数据库、Nginx 或 Apache 要处理请求,这些进程都需要占用内存。1GB 内存看着不小,但实际上系统本身就要吃掉一部分,再加上各种服务一启动,剩不了多少。
当可用内存耗尽时,Linux 内核的 OOM Killer(内存不足终止器)就会出来杀进程,就是挑个占用内存最多的进程强制关闭。你可能正在后台跑着数据库查询或者生成缓存,突然就被杀了,网站直接 502 或者 500 错误,这就是 OOM 的典型表现。
什么是 Swap?
Swap(交换空间)说穿了就是用硬盘来冒充内存。当物理内存快用完时,系统会把一些暂时不活跃的数据搬到 Swap 里,腾出内存给更急需的进程使用。等需要那些数据时,再从 Swap 里换回来。
但硬盘读写速度比内存慢几十倍甚至上百倍。所以 Swap 更像是个救生圈,用来保证系统不会直接挂掉。
准备工作清单
开始配置前,先检查几个关键项:
- 检查硬盘空间: 使用命令
df -h查看剩余硬盘空间,因为 Swap 本质上是把硬盘当内存用,所以你得有足够的剩余空间。 - 确认当前 Swap 状态: 使用命令
free -h看看系统现在有没有配置 Swap,如果已有可以先删除 Swap。 - 明确权限: 所有的操作都必须以 root 用户身份执行。如果你是用普通用户登录的,记得在命令前加
sudo。 - 了解 NVMe 的局限性: 磁盘性能远低于内存。这意味着当你的系统开始大量调用 Swap 时,网站响应速度还是会变慢。
准备工作做完,接下来就可以正式开始配置了。
实操教程:创建和配置 Swap
整个过程其实很简单,就几个命令的事。
创建 Swap
第一步:创建 Swap 文件
我们用 dd 命令创建一个 2GB 的 Swap 文件。这里以存放在 /swapfile 路径为例:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
命令里的参数解释一下:
bs=1M:每次读写 1MB 数据块count=2048:总共 2048 个块,也就是 2GBstatus=progress:显示创建进度
如果你想创建其他大小的 Swap,就改 count 的数值。比如 1GB 就写 count=1024,4GB 就写 count=4096。这个过程根据硬盘性能,一般几秒到十几秒就完成了。
第二步:设置文件权限
Swap 文件涉及系统核心数据,必须设置为只有 root 可以访问,防止被其他用户读取或修改:
sudo chmod 600 /swapfile
这个权限设置很重要,千万别跳过。
第三步:格式化为 Swap 格式
刚创建的文件只是个普通文件,需要用 mkswap 命令把它格式化成 Swap 专用格式:
sudo mkswap /swapfile
执行后会看到类似 “Setting up swapspace version 1, size = 2 GiB” 的提示信息,说明格式化成功。
第四步:启用 Swap
格式化完成后,用 swapon 命令启用这个 Swap 文件:
sudo swapon /swapfile
现在 Swap 已经开始工作了。验证一下是否生效:
free -h
输出结果里 Swap 那一行应该能看到 2GB 的总量,不再是全 0 了。如果显示正常,说明 Swap 已经成功启用。
第五步:设置开机自动挂载(推荐)
上面的配置在系统重启后会失效,需要把 Swap 信息写入 /etc/fstab 配置文件,让系统启动时自动加载。
编辑 fstab 文件 sudo nano /etc/fstab,在文件的最后一行添加:
/swapfile none swap sw 0 0
保存并退出(按 Ctrl+O 保存,然后 Ctrl+X 退出)。这样以后每次开机,系统都会自动挂载这个 Swap 文件,不用再手动操作。
删除 Swap
如果你后来升级了 VPS 配置,内存够用了,或者想重新调整 Swap 大小,可以按以下步骤删除现有的 Swap:
1、停用 Swap 文件
sudo swapoff /swapfile
2、删除 Swap 文件
sudo rm /swapfile
3、从 fstab 中移除自动挂载配置
如果你设置了开机自动挂载,就需要编辑 fstab 文件 sudo nano /etc/fstab 找到之前添加的 /swapfile none swap sw 0 0 这一行,把这一行删除掉或者在行首加 # 注释掉。
操作完成后,用 free -h 确认一下 Swap 是否已经归零。如果需要重新创建不同大小的 Swap,就从第一步重新开始操作。
进阶优化:别让 Swap 拖慢了你的 VPS
配置好 Swap 只是第一步,想让它在 JustHost 的 NVMe 环境下跑得更舒服,还得调一下系统的“脾气”。
1. 调整 Swappiness(决定什么时候用 Swap)
Linux 系统有个参数叫 swappiness,取值 0 到 100。
- 值越高(比如 60),系统就越倾向于把内存里的东西往 Swap 里挪。
- 值越低(比如 10),系统就越会尽量压榨物理内存,实在不行了才用 Swap。
由于 JustHost 硬盘 IO 并不是顶级,**我建议设置成 10**。这样既能保证系统不崩溃,又能最大限度利用物理内存的速度。
- 临时修改:
sysctl vm.swappiness=10 - 永久修改: 打开
/etc/sysctl.conf,在最后加入vm.swappiness=10
如果修改了 /etc/sysctl.conf 文件,使用命令 sudo sysctl -p 这个命令会重新加载配置文件,让你刚才的修改马上应用到系统中,不用重启。
2. 优化缓存压力
还有一个参数叫 vfs_cache_pressure,它决定了系统回收索引节点和目录项缓存的倾向。对于 JustHost 这种小内存机器,建议稍微调高一点(比如设为 50),让系统更积极地清理缓存。
- 临时修改:
sysctl vm.vfs_cache_pressure=50 - 永久修改: 打开
/etc/sysctl.conf,在最后加入vm.vfs_cache_pressure=50
应用配置文件
修改完 /etc/sysctl.conf 文件后,需要让系统重新加载配置才能生效:
sudo sysctl -p
执行后系统会显示刚才修改的参数值,确认无误就说明配置已经应用成功。这样就不用重启系统了,新的参数立即生效。
总结
给 JustHost VPS 配置 Swap 交换文件其实就是几条命令的事情,但对于小内存机器来说,这个操作的意义远比你想象的大。
回顾一下整个流程:先用 dd 命令创建 Swap 文件,设置好权限后格式化并启用,最后写入 fstab 实现开机自动挂载。整个过程不超过 5 分钟,但能让你的 1GB 内存 VPS 在跑 WordPress 时不再频繁 OOM 崩溃。
当然,Swap 终归只是个救生圈,不是万能药。如果你发现 Swap 使用率长期居高不下,网站还是经常卡顿,那说明确实该考虑升级配置了。毕竟再快的硬盘也比不上真正的物理内存,这是硬件层面的差距。
JustHost 常规优惠码,仅月付可用,立享 20% 专属折扣
LET20
20%常见问题解答
Q1: Swap 会不会损坏 SSD 寿命?
+这是很多人最担心的问题。理论上说,频繁读写确实会消耗 SSD 的写入寿命,但现代 SSD 的耐久度已经非常高了。就算每天往 Swap 里写入几个 GB 的数据,正常用个三五年完全没问题。
更何况 VPS 的硬盘是服务商维护的,磨损了也是他们换,不用你操心。
Q2: Swap 设置多大合适?
+Q3: 配置了 Swap 还是很卡怎么办?
+Q4: 重启后 Swap 消失了怎么办?
+/etc/fstab 文件。检查一下文件里有没有这一行:/swapfile none swap sw 0 0。如果没有或者写错了,加上或改正后保存,下次重启就会自动挂载了。