在 CentOS(以及其它 Linux 发行版)中,swapper(swap 交换分区/交换文件)频繁被使用,通常不是“swapper 本身有问题”,而是系统内存压力或配置导致内核不得不把内存页换出到磁盘。下面从原因、排查和解决办法三个层面说明。
swapper / swap 是 Linux 的虚拟内存机制free -h 中 available 很小si / so(swap in/out)频繁不为 0free -h
vmstat 1
CentOS 默认:
cat /proc/sys/vm/swappiness
# 常见值:30(CentOS 7/8)
innodb_buffer_pool_size 过大free -h
swapon -s
top
# 或
ps aux --sort=-%mem | head
vmstat 1
关注:
si:从 swap 读入内存so:从内存写入 swap如果
si/so长期 > 0,说明在频繁使用 swap
for pid in $(ls /proc | grep '^[0-9]'); do
awk -v p=$pid '/VmSwap/ {print p, $2, "KB"}' /proc/$pid/status 2>/dev/null
done | sort -k2 -n -r | head
# 临时
sysctl vm.swappiness=10
# 永久
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
一般服务器建议 10,数据库服务器可设为 1~5
-Xms2g -Xmx2g
innodb_buffer_pool_size = 2G
--memory=2g --memory-swap=2g
sync
echo 3 > /proc/sys/vm/drop_caches
仅用于排查,不建议定期执行
⚠️ 但如果有:
那就说明 swap 已成为性能瓶颈
CentOS swapper 频繁使用,本质原因几乎都是:内存不够或 swappiness 配置不合理。
如果你愿意,可以贴一下:
free -hvmstat 1top 内存占用我可以帮你具体判断是哪种情况。