Jiwon Min Developer

在 Ubuntu 22.04 LTS 上配置交换内存

在 AWS EC2 免费套餐或其他低配自托管服务器上,安装大型软件包时经常会把 RAM 打满,导致卡死或 OOM 杀进程。在升级实例类型之前,用 swap 文件 把一部分磁盘当作应急内存,有助于扛过安装和构建时的瞬时峰值。本文以 Ubuntu 22.04 LTS 为例,给出步骤,并说明 什么时候该用、什么时候不该用

Random Access Memory

© Unsplash © Akshar Dave🌻


Swap 做什么

Swap(交换区) 把磁盘(分区或文件)的一部分当作 RAM 页的溢出区。内核会把暂时不用的页换出到磁盘,需要时再换回。LaravelNestJS 这类大体量安装,或 npm/composer 解析依赖时,常出现 短时间内存峰值,仅靠物理内存可能扛不住。

但磁盘 I/O 远慢于内存。如果主机 长期泡在 swap 里,延迟会明显变差。Swap 是“缓冲”,不是“内存替代品”。

Google Compute EngineAmazon EC2 上增加内存通常需要停机改机型。意外 OOM 重启会拉长故障窗口,因此 开发、玩具项目、低配测试节点 预先开 swap 更稳妥。正式生产更应靠合理规格或自动扩缩。

Windows 里对应概念叫 虚拟内存(页面文件)

Windows 11 virtual memory

Windows 虚拟内存

容量怎么选

没有放之四海皆准的公式,实务上可从下表起步:

物理 RAM Swap 起点 说明
1–2 GB(t2/t3.micro 级) 2–4 GB 装包、轻量构建缓冲
4 GB 2–4 GB 不需要休眠时约 0.5–1 倍 RAM
8 GB 以上 1–2 GB 或不用 没有明确需求就保持最小
  • 磁盘快满时不要建超大 swap。
  • fallocate 失败可用 dd
  • 下文示例为 4GB/swapfile,按需改数字即可。

配置步骤

1. 查看当前 swap

sudo free -m
sudo swapon --show

Check swap memory

2. 关闭已有 swap(仅在调整大小时)

sudo swapoff -a

3. 创建 swap 文件

sudo fallocate -l 4G /swapfile

失败时:

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

4. 权限、格式化、启用

文件必须仅 root 可读写。

sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
sudo free -m

Make swapfile

5. 重启后仍生效(/etc/fstab

grep -n swapfile /etc/fstab || echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Swap setup for rebooting

6. 验证

sudo free -m
sudo swapon --show

Complete make swapfile

swappiness 与性能

vm.swappiness(0–100)控制内存压力下使用 swap 的积极程度。Ubuntu Server 常见默认值约 60。

  • 数据库或延迟敏感服务:常降到 10–30。
  • 仅作低配构建节点:保持默认往往可以。

临时:

sudo sysctl vm.swappiness=20

持久化:

echo 'vm.swappiness=20' | sudo tee /etc/sysctl.d/99-swap.conf
sudo sysctl --system

调低 swappiness 并不能消灭 OOM。内存本身不够时,进程仍会死亡或极慢。

生产注意点

  • 持续 swap thrashing 就是故障,用 vmstat 1 等观察 si/so
  • 根卷已满时再建大 swap,部署和日志也会一起失败。
  • 合规环境需考虑内存页落盘问题,必要时加密 swap。
  • 编排节点请优先遵循平台建议。

关闭 swap

sudo swapoff -v /swapfile
sudo sed -i.bak '/swapfile/d' /etc/fstab
sudo rm /swapfile
sudo free -m

修改 /etc/fstab 后务必确认有控制台/串口恢复手段再重启,笔误可能导致无法启动。

参考文献