linux添加Swap笔记
GCP 1核1G Debian 12 实例添加 Swap 笔记
环境信息
- 云服务商:Google Cloud Platform (GCP)
- 实例配置:1核 / 1GB 内存
- 操作系统:Debian 12
- 内核版本:6.1.0-44-cloud-amd64
是否需要手动添加 Swap?
✅ 强烈建议添加
理由:
- 1GB 内存较小,运行 Nginx/MySQL/Redis 等应用时容易内存不足
- Debian 12 安装时若检测到内存 ≤ 1GB,默认会创建 Swap,说明这是常见实践
- GCP 云内核(cloud-amd64)对 Swap I/O 有优化
- 可有效防止 OOM(内存溢出)导致进程崩溃或 SSH 断开
快速配置方案
1. 创建并启用 Swap 文件(2GB)
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile2. 配置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab3. 调整 Swappiness(优先使用物理内存)
# 临时调整
sudo sysctl vm.swappiness=10
# 永久生效
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf4. 验证配置
swapon --show # 应显示 /swapfile
free -h # 查看内存和 Swap 使用情况
cat /proc/swaps # 详细 Swap 信息Debian 12 特别说明
- systemd 会自动识别
/etc/fstab中的 Swap 条目,无需额外配置 - 可选用 ZRAM(压缩内存 Swap)获得更好性能:
sudo apt install systemd-zram-generator
# 安装后重启即可,自动使用压缩内存作为 Swap监控脚本(可选)
cat > ~/check_mem.sh << 'EOF'
#!/bin/bash
MEM_AVAIL=$(free -m | awk '/^Mem:/{print $7}')
SWAP_USED=$(free -m | awk '/^Swap:/{print $3}')
if [ $MEM_AVAIL -lt 100 ]; then
echo "警告:可用内存仅 ${MEM_AVAIL}MB,Swap 已用 ${SWAP_USED}MB"
fi
EOF
chmod +x ~/check_mem.sh
# 每 5 分钟检查一次
(crontab -l 2>/dev/null; echo "*/5 * * * * ~/check_mem.sh") | crontab -注意事项
- Swap 使用磁盘模拟内存,速度远慢于物理内存
- 频繁使用 Swap 可能导致系统响应变慢
如果业务持续使用超过 500MB Swap,建议升级实例:
e2-small:2核 / 2GBn1-standard-1:1核 / 3.75GB
参考资料
- GCP 官方文档:Add swap space to a Compute Engine instance
- Debian Wiki:Swap