首页主机资讯如何诊断CentOS的Swapper问题

如何诊断CentOS的Swapper问题

时间2026-01-20 22:34:03发布访客分类主机资讯浏览962
导读:CentOS 中 Swapper 问题的定位与排查指南 一、先判断是 Swap 使用异常还是内核 I/O 挂起 使用以下命令快速体检: 查看内存与 Swap:free -h 查看已启用的 Swap:swapon --show 或 swa...

CentOS 中 Swapper 问题的定位与排查指南

一、先判断是 Swap 使用异常还是内核 I/O 挂起

  • 使用以下命令快速体检:
    • 查看内存与 Swap:free -h
    • 查看已启用的 Swap:swapon --showswapon -s
    • 实时资源与换入换出:vmstat 1 10(关注 si/so 是否持续不为 0)
    • 实时进程与内存:top/htop(按 Shift+M 按内存排序,观察是否有进程占用大量内存/交换)
  • 若出现大量换入换出(si/so 持续较高)或可用内存(available)长期偏低,多半是 Swap 使用异常;若系统整体卡死但 si/so 不高,则更可能是 内核 I/O 挂起(见第二部分)。

二、若日志出现 “INFO: task swapper:N blocked for more than 120 seconds”

  • 这是内核的 hung task 超时提示,表示内核线程(编号 N)因等待 I/O 超过 120 秒 未返回,常见于存储/磁盘异常或资源紧张。
  • 快速定位步骤:
    • 查看内核日志:dmesg -T | tail -n 200journalctl -k -b -1(上一次启动)定位具体阻塞点与时间线。
    • 检查存储健康与延迟:如 iostat -x 1lsblk、云盘/阵列状态、物理磁盘 SMART/阵列重建状态等。
    • 临时缓解(仅在确认是脏页回写/回写拥塞时谨慎使用):
      • 降低脏页阈值:sysctl -w vm.dirty_background_ratio=5; sysctl -w vm.dirty_ratio=10
    • 若确认为临时云侧异常,可先重启;若反复出现,需深入排查存储链路或迁移至健康存储。

三、若 dmesg 出现 “swapper: page allocation failure. order:X, mode:0x…”

  • 这是 内核内存分配失败(常伴随 order 值,如 order:1),说明在 ZONE 内无法分配连续物理页,即使 free 显示仍有 buffer/cache。
  • 快速定位步骤:
    • 查看内存碎片与回收行为:cat /proc/pagetypeinfocat /proc/vmstat(关注 compact_fail/compact_success、nr_zone_active_anon/nr_zone_inactive_anon 等)。
    • 检查 NUMA/跨节点分配压力与回收策略:numactl -Hcat /proc/sys/vm/zone_reclaim_mode
    • 临时缓解(仅在明确为 NUMA 回收导致可回收页不足时尝试):
      • 开启本地回收:sysctl -w vm.zone_reclaim_mode=1(回收本地节点可回收页,可能降低单进程吞吐)
    • 进一步排查:应用内存突增、驱动/内核模块泄漏、透明大页(THP)碎片等。

四、若系统因 Swap 设备无法就绪而无法启动

  • 典型现象:启动进入 紧急模式,日志含 “Time out waiting for device dev-mapper-…-swap.device”。
  • 快速定位与修复:
    • 检查 LVM 卷组:lvm vgdisplay
    • 激活卷组:lvm vgchange -ay
    • 验证并重启:systemctl default
  • 若使用文件型 Swap,检查 /etc/fstab 中 Swap 条目是否正确,必要时重新 mkswap/swapon 并验证 swapon --show

五、常规处置与优化建议

  • 找出占用 Swap 最多的进程(按 Swap 使用量排序):
    • 命令示例:
      for i in $(ls /proc | grep -E '^[0-9]+');
       do
        awk '/Swap:/ {
      sum+=$2}
       END {
      printf "%s %.1fM\n", i, sum/1024}
          ' /proc/$i/smaps 2>
          /dev/null
      done | sort -k2 -nr | head
      
  • 调整内核倾向以减少不必要的 Swap:
    • 查看:cat /proc/sys/vm/swappiness
    • 临时:sysctl vm.swappiness=10
    • 永久:在 /etc/sysctl.conf 添加 vm.swappiness=10 后执行 sysctl -p
  • 当 Swap 使用长期偏高时,优先 增加物理内存关闭不必要服务/优化应用内存;必要时 扩容 Swap 分区/文件(SSD 更佳)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何诊断CentOS的Swapper问题
本文地址: https://pptw.com/jishu/787744.html
CentOS中Swapper的作用范围 CentOS中如何管理Swapper

游客 回复需填写必要信息