在 CentOS(及其他 Linux 发行版)中,swap 被占满通常不是“故障”,而是系统内存管理的一种表现。下面从常见原因 → 排查方法 → 解决建议给你系统讲一下。
当 RAM 不够用时,内核会把不常用的内存页换出到 swap。
典型场景:
✅ 表现:
free -h
top
看到:
Mem 几乎用满Swap 使用率持续上升CentOS 默认:
cat /proc/sys/vm/swappiness
# 通常是 30
值越大,越“积极”使用 swap。
即使内存还有空闲,也可能写入 swap。
某些程序:
常见于:
即使现在内存空闲:
free -h
swapon -s
top
# 按 M 排序
或:
ps aux --sort=-%mem | head
smem -s swap -r | head
(需安装 smem)
cat /proc/sys/vm/swappiness
⚠️ 有风险,生产环境谨慎
swapoff -a
swapon -a
会先把 swap 数据换回内存,内存不足会卡死
sysctl vm.swappiness=10
永久生效:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
dd if=/dev/zero of=/swapfile bs=1G count=4
mkswap /swapfile
swapon /swapfile
如:
-Xmxinnodb_buffer_pool_size-m如果是某个服务导致:
systemctl restart xxx
⚠️ 危险信号:
dmesg | grep oom)✅ 正常情况:
CentOS swap 占满,本质原因几乎都是:内存不够 or 使用策略偏激进。
如果你愿意,可以把下面信息发我,我可以帮你精准判断:
free -htop / htop 截图