在 CentOS 中,swap 使用率满了(swap 被占满)通常说明系统内存不足,或某些进程占用了大量内存后被换出到 swap。下面按「紧急处理 → 查找原因 → 长期解决」来说明。
free -h
swapon --show
top
看几个关键点:
Mem)是否也快满了如果 free -h 显示 内存还有空闲,可以手动换回:
swapoff -a
swapon -a
⚠️ 注意:
如果内存真的不够,可以临时加 swap 文件:
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
验证:
swapon --show
重启后失效,仅用于应急
在 top 或 htop 中找:
例如:
kill -9 PID
for pid in $(ls /proc | grep '^[0-9]'); do
awk -v p=$pid '/VmSwap/{print p, $2}' /proc/$pid/status 2>/dev/null
done | sort -k2 -n -r | head
或:
smem -s swap -r | head
cat /proc/sys/vm/swappiness
临时:
sysctl vm.swappiness=10
永久:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
如果是长期服务:
例如:
-Xmx--memoryinnodb_buffer_pool_sizeswap 满 ≠ swap 问题,本质是内存不够或配置不合理
应急:加 swap / 杀进程
根本:查进程 + 调参数 + 加内存
如果你愿意,可以把 free -h 和 top 的输出贴出来,我可以帮你具体分析是哪类问题。