在 CentOS(以及其它 Linux 发行版)中,swapper / 交换空间(swap)内存不足通常不是“swapper 本身出问题”,而是系统物理内存 + 交换空间都被用光,导致内核的 swapper(kswapd / 页面回收机制)无法腾出内存。下面从原因、表现和排查思路来说明。
swapper 是内核中负责内存页换入/换出的机制✅ 表现:
free -h
# swap 使用率 100%
✅ 排查:
top
# 看 RES 列持续增长
vm.swappiness 过高 → 过早使用 swap查看:
cat /proc/sys/vm/swappiness
一般建议:
swapon --show
如果没有输出,说明没有启用 swap。
内核日志中常见:
Out of memory: Kill process
swapper: page allocation failure
查看:
dmesg | grep -i "oom\|swap\|memory"
journalctl -k | grep -i memory
tmpfs 使用过多/dev/shm 被写爆df -h | grep shm
free -m
Mem 满 + Swap 满 → 真内存不足Mem 有空闲但 Swap 满 → swappiness 或历史占用dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
写入 /etc/fstab:
/swapfile swap swap defaults 0 0
sysctl -w vm.swappiness=30
永久:
echo "vm.swappiness=30" >> /etc/sysctl.conf
-Xmxinnodb_buffer_pool_size--memoryCentOS swapper 内存不足的本质是:物理内存 + swap 容量不足以支撑当前负载。
如果你愿意,可以贴出:
free -htop / htopdmesg | tail我可以帮你精确判断是 内存不够、swap 不够,还是程序泄漏。