最近将服务器迁移到了新的阿里云 ECS 实例,虽然配置和之前完全一样,但上线后却发现内存异常紧张,系统非常容易卡死。
💥 问题表现
- 内存很快吃满,哪怕只启动几个基本服务;
- 添加了 2.5GB 的 Swap 分区,却发现系统根本不使用 Swap;
- 系统在内存爆满时仍然不主动使用 Swap 缓解压力。
🧪 排查过程
- 检查是否启用了 Swap:
sudo swapon --show
NAME TYPE SIZE USED PRIO
/www/disk/swapfile file 2.5G 0M -2
确认已经启用了 Swap,并且大小为 4GB,但使用率始终为 0%。
- 查看系统的 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 条评论