最近将服务器迁移到了新的阿里云 ECS 实例,虽然配置和之前完全一样,但上线后却发现内存异常紧张,系统非常容易卡死。

💥 问题表现

  • 内存很快吃满,哪怕只启动几个基本服务;
  • 添加了 2.5GB 的 Swap 分区,却发现系统根本不使用 Swap;
  • 系统在内存爆满时仍然不主动使用 Swap 缓解压力。

🧪 排查过程

  1. 检查是否启用了 Swap:
sudo swapon --show

NAME TYPE SIZE USED PRIO
/www/disk/swapfile file 2.5G 0M -2

确认已经启用了 Swap,并且大小为 4GB,但使用率始终为 0%

  1. 查看系统的 Swap 使用倾向(swappiness):
cat /proc/sys/vm/swappiness

阿里云的默认值可能是 10 或更低,导致系统极度不愿意使用 Swap

🧯 解决方案

提高系统使用 Swap 的积极性:

sudo sysctl vm.swappiness=80

该设置会立即生效,将 swappiness 调整为 80,意味着:

  • 系统在内存接近吃满前,就会开始将一部分内容换入 Swap;
  • 可以显著降低物理内存压力,减少卡死、OOM(Out of Memory)等问题。

✅ 设置后,Swap 开始正常使用,系统运行稳定顺畅。

📌 什么是 vm.swappiness

vm.swappiness 是一个 Linux 内核参数,控制系统使用 Swap 的倾向。其取值范围是 0 到 100:

  • 0:尽量避免使用 Swap(只在极端情况下才用);
  • 100:积极使用 Swap,尽快把不活跃内存换出;
  • 默认值:大多数发行版中为 60,但某些云服务商(如阿里云)可能设为更低。

🔄 持久化配置(可选)

上述命令只在当前运行时有效,重启后会恢复。若要永久生效:

编辑配置文件:

sudo nano /etc/sysctl.conf

添加:

vm.swappiness=80

保存后运行:

sudo sysctl -p

即可让设置在重启后仍然生效。


✅ 总结

如果你在阿里云上使用了 Swap,但系统仍然在内存爆满时卡死,请务必检查并调整 vm.swappiness,提升系统稳定性是如此简单!



0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注