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 /swapfile

2. 配置开机自动挂载

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

3. 调整 Swappiness(优先使用物理内存)

# 临时调整
sudo sysctl vm.swappiness=10

# 永久生效
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

4. 验证配置

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核 / 2GB
    • n1-standard-1:1核 / 3.75GB

参考资料

标签: none

添加新评论