如何诊断CentOS的Swapper问题
导读:CentOS 中 Swapper 问题的定位与排查指南 一、先判断是 Swap 使用异常还是内核 I/O 挂起 使用以下命令快速体检: 查看内存与 Swap:free -h 查看已启用的 Swap:swapon --show 或 swa...
CentOS 中 Swapper 问题的定位与排查指南
一、先判断是 Swap 使用异常还是内核 I/O 挂起
- 使用以下命令快速体检:
- 查看内存与 Swap:free -h
- 查看已启用的 Swap:swapon --show 或 swapon -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 200 或 journalctl -k -b -1(上一次启动)定位具体阻塞点与时间线。
- 检查存储健康与延迟:如 iostat -x 1、lsblk、云盘/阵列状态、物理磁盘 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/pagetypeinfo、cat /proc/vmstat(关注 compact_fail/compact_success、nr_zone_active_anon/nr_zone_inactive_anon 等)。
- 检查 NUMA/跨节点分配压力与回收策略:numactl -H、cat /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
