温馨提示×

centos swap怎么排查

小樊
53
2026-09-08 19:43:35
栏目: 智能运维

在 CentOS 中排查 swap(交换分区/交换文件) 问题,通常可以从是否启用、使用量、配置、性能、进程占用几个维度来查。下面给你一套实用排查流程。


一、确认 swap 是否存在并启用

1. 查看 swap 总览

free -h

或

swapon --show

✅ 正常应有类似:

NAME      TYPE      SIZE   USED PRIO
/dev/sda2 partition   4G   1.2G   -2

❌ 如果 free -h 中 Swap 全是 0,说明未启用或未配置


二、检查 swap 配置(fstab)

2. 查看开机是否挂载 swap

cat /etc/fstab | grep swap

常见形式:

/dev/sda2   swap   swap   defaults   0 0

或

/swapfile   swap   swap   defaults   0 0

如果这里没有 swap,重启后 swap 不会自动启用。


三、swap 没生效怎么办

3. 手动启用 swap

如果是 swap 分区:

swapon /dev/sda2

如果是 swap 文件:

swapon /swapfile

⚠️ 若提示:

swapon: /swapfile: insecure permissions

执行:

chmod 600 /swapfile

四、swap 使用异常(用很多 / 很卡)

4. 查看 swap 使用来源(哪个进程)

for file in /proc/*/status; do
  awk '/^Pid:|^Name:|VmSwap:/{printf "%s ", $0} END{print ""}' "$file"
done | sort -k3 -n -r | head

或安装工具:

yum install smem -y
smem -s swap -r | head

五、swap 相关内核参数

5. 查看 swappiness(何时使用 swap)

cat /proc/sys/vm/swappiness

常见值:

  • 30(默认,偏保守)
  • 10(服务器推荐)
  • 0(尽量不用 swap)

临时修改:

sysctl vm.swappiness=10

永久生效:

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

六、swap 性能问题(IO 慢)

6. 查看 swap IO

vmstat 1

关注:

  • si(swap in)
  • so(swap out)

持续非 0 → 内存不足或磁盘慢


七、swap 文件还是分区?(建议)

7. 推荐配置方式

  • 物理机:swap 分区
  • 云服务器/虚拟机:swap 文件更灵活

创建 4G swap 文件示例:

dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab

八、常见故障总结

现象 原因
free 显示 swap 0 未启用或未配置
swap 用满 内存不足
系统卡顿 swappiness 高 / 磁盘慢
重启后消失 fstab 没写
OOM 杀进程 内存 + swap 都不够

如果你愿意,可以贴一下:

  • free -h
  • swapon --show
  • cat /etc/fstab

我可以帮你直接定位问题。

0 踩