低配 VPS 救星:Linux Swap 分区创建与内核优化
你的低配 VPS 跑个 WordPress 就开始卡,MySQL 动不动就 OOM 被 kill,或者 SSH 连上去敲个命令都要卡半天?别急着加钱升级配置,先看看内存是不是被吃光了。**主机选** 的这篇 Linux 教程,专治低配 VPS 内存不足的硬伤,手把手教你创建 Swap 分区并优化内核参数,让你的小水管 VPS 也能稳定跑业务。

为什么低配 VPS 必须配 Swap?
物理内存不够时,系统会直接杀进程(OOM Killer)。Swap 就是磁盘上的一块空间,充当虚拟内存。当物理内存吃紧,系统会把不活跃的内存数据换到 Swap,腾出空间给活跃进程。对于 512MB 或 1GB 内存的低配 VPS,没有 Swap 等于在走钢丝。
Swap 分区的适用场景
• 跑 WordPress + MySQL + Nginx 的轻量网站。
• 偶尔编译小软件,内存临时不够用。
• 避免 MySQL 或 PHP-FPM 因内存不足被强制杀掉。
Swap 的坑:别滥用
Swap 不是物理内存,速度慢很多。如果 VPS 内存长期 100% 占用且 Swap 也吃满,那该升级配置了,别死扛。
低配 VPS 创建 Swap 分区实战
这里我们不搞分区表重分区那套高风险操作,直接用文件创建 Swap,安全、灵活、可随时调整。适合所有 Linux 发行版(Ubuntu、Debian、CentOS 都行)。
第一步:检查当前 Swap 状态
先看看系统有没有 Swap:
swapon –show
如果输出为空,说明没有 Swap
free -h
关注 “Swap” 那一行的 total 是否为 0
如果已经存在 Swap,跳过创建步骤。
第二步:创建 Swap 文件
建议 1GB 内存的 VPS 配 1GB Swap,512MB 的配 1-2GB。别超过磁盘剩余空间的一半,否则磁盘 IO 会炸。
fallocate -l 1G /swapfile
创建一个 1GB 的空文件,路径是 /swapfile
如果 fallocate 不支持,用 dd if=/dev/zero of=/swapfile bs=1M count=1024
ls -lh /swapfile
确认文件大小是 1.0G
第三步:设置权限并启用 Swap
Swap 文件权限必须严格,否则系统会警告甚至拒绝启用。
chmod 600 /swapfile
只有 root 能读写,防止普通用户篡改
mkswap /swapfile
格式化为 swap 格式
swapon /swapfile
立即启用
swapon –show
确认 /swapfile 已激活,类型为 file
第四步:设置开机自动挂载
不设这一步,重启后 Swap 就丢了。
echo ‘/swapfile none swap sw 0 0’ | tee -a /etc/fstab
写入 fstab,重启自动挂载
cat /etc/fstab | grep swap
确认写入成功,别写错了路径
内核参数优化:让 Swap 不拖后腿
Swap 启用后,默认内核参数可能让系统过早开始换页,导致性能下降。我们需要调整 `swappiness` 和 `vfs_cache_pressure`。
调整 swappiness:控制换出倾向
`swappiness` 值范围 0-100,默认 60。值越大,系统越积极使用 Swap。低配 VPS 建议调低,优先用物理内存。
sysctl vm.swappiness=10
临时生效,物理内存还剩 90% 时才开始用 Swap
别设成 0,极端情况下可能导致 OOM
echo ‘vm.swappiness=10’ >> /etc/sysctl.conf
写入配置文件,永久生效
调整 vfs_cache_pressure:减少缓存回收
这个参数控制内核回收 dentry 和 inode 缓存的倾向。调低可以保留更多文件系统缓存,减少磁盘 IO。
sysctl vm.vfs_cache_pressure=50
默认 100,调低到 50 表示内核回收缓存的意愿降低一半
echo ‘vm.vfs_cache_pressure=50’ >> /etc/sysctl.conf
写入配置文件
生效并验证
sysctl -p
重新加载 /etc/sysctl.conf 里的所有参数,无需重启
sysctl vm.swappiness
sysctl vm.vfs_cache_pressure
确认参数已生效
老鸟叮嘱:Swap 不是银弹
**别在 SSD 上疯狂读写 Swap。** 低配 VPS 的磁盘通常是 SSD,Swap 频繁换入换出会加速磁盘磨损,同时拖慢整个系统。如果你的 VPS 长期 `swapon –show` 显示 Swap 使用率超过 50%,并且 `free -h` 显示物理内存几乎占满,说明你的业务已经超载。这时候该做的不是优化 Swap,而是升级内存或优化代码(比如给 MySQL 开慢查询日志,查查是不是有慢 SQL)。
另外,**不要用 Swap 文件路径包含空格或特殊字符**,否则 `swapon` 会报错。保险起见,路径固定用 `/swapfile`。
FAQ
**Q: Linux SSH 连不上怎么办?**
A: 先检查 VPS 控制台的 VNC 或面板是否正常。如果连 VNC 都进不去,可能是内存耗尽导致系统卡死。重启 VPS 后,优先按本文创建 Swap,然后检查防火墙是否放行了 SSH 端口(默认 22)。
**Q: VPS 防火墙端口放行后还是访问不了是什么原因?**
A: 检查系统内部防火墙(如 iptables / ufw / firewalld)是否也拦截了端口。另外,如果内存不足,Nginx 或 MySQL 可能已被 OOM Killer 杀掉,重启服务试试:`systemctl restart nginx`。Swap 能减少这种被杀的概率。
**Q: Linux 小白可以直接用 root 账号操作吗?**
A: 可以,但风险极高。建议创建一个普通用户并赋予 sudo 权限。如果必须用 root,务必开启 SSH 密钥登录并禁用密码登录。本文所有命令都需要 root 权限,临时用 `sudo -i` 切换到 root 也行。
**Q: BBR 开启后为什么速度没有明显提升?**
A: BBR 优化的是网络拥塞控制,对带宽跑满的场景有效。如果你的 VPS 本身内存不足,系统忙于换页,CPU 和磁盘 IO 成了瓶颈,BBR 也救不了。先按本文解决内存问题,再谈 BBR。
**Q: Swap 文件可以放在其他分区吗?**
A: 可以,但建议放在根分区的 SSD 上。不要放在 NFS、CIFS 等网络挂载点或 USB 盘上,速度太慢且不稳定。如果根分区空间不够,可以挂载一块额外的数据盘,把 Swap 文件放在那里。
**Q: 如何删除 Swap?**
A: 先 `swapoff /swapfile`,然后删除 `/swapfile` 文件,最后从 `/etc/fstab` 中移除那行配置。重启后确认 `swapon –show` 无输出。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9414.html 商家投稿邮箱:zhujixuanblog@qq.com
