文章目录
一般 1 核 1G 的 Ubuntu 服务器,建议先加 2 GiB Swap(交换空间)。它会占用 2 GiB 系统盘空间,可以在 1Panel、数据库或容器短时吃满内存时缓冲一下。配置立即生效,不需要重启。
1. 先检查现有 Swap 和磁盘空间
用 SSH 登录服务器,或打开 1Panel 里的终端,执行:
free -h
sudo swapon --show
df -h /
findmnt -no FSTYPE /
sudo ls -l /swapfile
如果 swapon --show 没有输出、根分区是 ext4 或 xfs、系统盘还剩至少 4 GiB,且最后一条提示 /swapfile 不存在,就可以继续。如果已经有 Swap 或 /swapfile 已存在,先不要覆盖。
2. 创建并启用 2 GiB Swap
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress conv=excl &&
sudo chmod 600 /swapfile &&
sudo mkswap /swapfile &&
sudo swapon /swapfile
第一条命令会写入 2 GiB 数据,等进度跑完即可。`conv=excl` 会在文件已经存在时停止,避免覆盖。这里用 dd 创建文件,是为了避免某些文件系统把预分配文件识别成有空洞,导致 swapon 拒绝启用。Ubuntu swapon 手册
3. 确认生效,再设为开机自动启用
sudo swapon --show
free -h
看到 /swapfile、大小约 2G 就说明成功。`USED` 显示 0B 也正常,表示当前还不需要用 Swap。确认后执行:
sudo cp -a /etc/fstab "/etc/fstab.bak.$(date +%Y%m%d-%H%M%S)"
grep -qE '^[[:space:]]*/swapfile[[:space:]]' /etc/fstab ||
printf '\n/swapfile none swap sw 0 0\n' | sudo tee -a /etc/fstab
sudo systemctl daemon-reload
先保留系统默认的 swappiness 就行。如果以后网站变慢,同时 vmstat 1 里的 si、`so` 持续有数值,说明系统频繁在磁盘和内存之间搬数据。这时优先减少常驻容器或调低数据库的内存占用;如果业务本身需要更多内存,升级到 2 GiB 通常比继续加 Swap 更有效。