温馨提示×

centos swapper怎么排查

小樊
44
2026-10-26 16:40:07
栏目: 智能运维

在 CentOS(以及一般 Linux)里,“swapper”通常指的是 swap 分区 / swap 文件的使用、swappiness、swap 异常占用、OOM、进程被 swap 出去 等相关问题。下面按常见排查场景给你一套系统思路。


一、先确认 swap 基本状态

1. 查看 swap 是否启用

free -h
swapon -s
cat /proc/swaps

正常应看到:

  • free -h 中 Swap 有大小
  • swapon -s 有设备(如 /dev/sda2 或 /swapfile)

2. 查看 swap 使用情况

free -h
top

在 top 中:

  • Swap: 表示系统 swap 使用量
  • RES 大但 VIRT 更大,可能被 swap

二、排查“为什么用 swap”

1. 查看 swappiness(重要)

cat /proc/sys/vm/swappiness
  • 默认 30(CentOS 7)
  • 值越大越容易用 swap

临时调整:

sysctl vm.swappiness=10

永久:

echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

2. 内存是否真的不足

free -h
vmstat 1

关注:

  • free 很低
  • si/so(swap in/out)持续不为 0 → 说明在频繁 swap

三、找出“谁在用 swap”

1. 按进程查看 swap 占用(推荐)

for pid in $(ls /proc | grep '^[0-9]'); do
  awk -v pid=$pid '/VmSwap/{print pid, $2" KB"}' /proc/$pid/status 2>/dev/null
done | sort -k2 -n -r | head

或:

smem -s swap -r | head

(需安装 smem)

2. 查看具体进程

ps -eo pid,comm,%mem,vsz,rss,cmd | sort -k3 -nr | head

四、swap 性能问题排查

1. swap 设备是否慢(磁盘 IO)

iostat -x 1

关注:

  • %util 高
  • await 大

如果是机械盘 swap → 很慢

2. 是否用了文件 swap

swapon -s
  • 文件 swap 性能差
  • 建议用独立分区或 SSD

五、swap 相关内核参数

sysctl -a | grep vm

常用:

  • vm.swappiness
  • vm.vfs_cache_pressure
  • vm.min_free_kbytes

六、特殊:swapper 进程(PID 0)

如果你看到:

ps -ef | grep swapper
  • swapper 是内核线程(PID 0 / 1)
  • 不是问题
  • 只在系统空闲时调度

七、常见问题总结

现象 可能原因
swap 飙高 内存不足
卡顿 swap 在机械盘
服务慢 进程被 swap 出去
OOM swap 太小或没开

八、你可以告诉我

如果你愿意,可以补充:

  1. CentOS 版本(6/7/8/Stream)
  2. 是 swap 用太多 还是 系统卡
  3. free -h 和 swapon -s 输出

我可以给你更精确的排查命令。

0 踩