在 CentOS(以及大多数 Linux 系统)中,swap 被用满通常不是“swap 本身的问题”,而是内存压力或系统配置问题的表现。下面按常见原因给你梳理一下:
这是最主要原因。
判断方法:
free -h
top
htop
看:
Mem 的 available 是否很小Swap 的 used 是否接近 total某些程序:
持续申请内存不释放,最终把内存和 swap 都吃光。
查看谁在用内存:
ps aux --sort=-%mem | head
CentOS 默认:
vm.swappiness = 30
如果被人改成 60~100,系统会过早使用 swap,即使内存还没满。
查看:
cat /proc/sys/vm/swappiness
临时降低:
sysctl vm.swappiness=10
比如:
一旦内存吃紧,swap 很快满。
free -h
top
# 或
ps aux --sort=-%mem | head -20
dmesg | grep -i oom
journalctl -xe
# 释放 swap(先确保内存足够)
swapoff -a
swapon -a
你可以把下面信息贴出来,我可以帮你精准判断:
free -h
swapon -s
cat /proc/sys/vm/swappiness
ps aux --sort=-%mem | head
我可以直接告诉你:是内存不够、配置问题,还是某个服务在搞事。