CentOS 中 Swap 使用量一直升高,通常不是“Swap 本身有问题”,而是系统内存压力或配置问题导致的。下面按最常见原因 → 排查方法 → 解决方案给你一个完整分析。
当 物理内存(RAM) 不够用 时,系统会把不活跃的内存页换出到 Swap。
典型表现
free -h 中 Mem 使用率很高Swap 持续增长✅ 这是正常但危险的信号
某些程序(Java、Python、MySQL、Docker 容器等)持续申请内存但不释放。
特征
swappiness 决定系统多积极使用 Swap
swappiness=30即使内存还有剩余,但:
常见于:
如:
innodb_buffer_pool_size 过大free -h
重点看:
Mem availableSwap usedtop
或更好用:
htop
关注:
RES%MEMps aux --sort=-%mem | head -20
cat /proc/sys/vm/swappiness
建议值:
10~30
临时修改:
sysctl vm.swappiness=10
永久修改:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
cat /proc/meminfo
重点看:
SlabPageTablesAnonPagesjournalctl -xe
dmesg | egrep -i 'oom|kill|mem'
如果有:
Out of memory: Kill process
说明曾经 OOM 过
Swap 升高后不会自动降 除非:
swapoff + swaponswapoff -a
swapon -a
⚠️ 前提:
✅ 解决:
✅ 解决:
✅ 解决:
✅ 解决:
echo 3 > /proc/sys/vm/drop_caches
❌ 不是
✅ 适度 Swap 是好事
但:
你可以直接贴出以下信息,我可以精准判断原因:
free -h
top
cat /proc/sys/vm/swappiness
ps aux --sort=-%mem | head -20
或者告诉我:
我可以给你针对性的优化方案。