在 CentOS(以及其他 Linux 发行版)中,swapper(swap 交换分区/交换文件机制)导致系统卡顿,本质上是因为内存不足时,系统把内存数据写到磁盘 swap 上,而磁盘 I/O 远慢于内存。
下面分点说明原因和常见场景。
当物理内存(RAM)耗尽:
磁盘速度 << 内存速度,于是:
CentOS 默认:
cat /proc/sys/vm/swappiness
# 常见为 30 或 60
含义:
如果 swappiness 太高,即使内存还够,也可能提前 swap,导致卡顿。
如果 swap 位于:
swap I/O 会非常慢,严重影响性能。
常见原因:
结果:
在真正 OOM(Out Of Memory)之前:
free -h
swapon -s
vmstat 1
关注:
si(swap in)so(swap out)持续非零 → swap 在干活
iostat -x 1
如果 %util 接近 100%,说明磁盘瓶颈
# 临时
sysctl vm.swappiness=10
# 永久
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
一般服务器建议:
1~1010~30例如:
systemctl set-property nginx.service MemoryMax=1G
或 Docker:
--memory=1g
swapoff -a
top
# 或
ps aux --sort=-%mem | head
CentOS 中 swapper 导致卡顿,根本原因是内存不足或 swap 使用过于积极,系统被迫用慢速磁盘代替内存,造成 I/O 瓶颈。
如果你愿意,可以贴出:
free -hvmstat 1top我可以帮你具体判断是不是 swap 的问题。