温馨提示×

CentOS Swap监控方法有哪些

小樊
37
2025-11-17 18:22:35
栏目: 智能运维

CentOS 常用 Swap 监控方法

一 快速查看类命令

  • 使用 free -h 查看内存与 Swap 的总量、已用、空闲等,输出以 GB/MB 更易读。
  • 使用 swapon --show 或查看 /proc/swaps,列出已启用的 Swap 分区/文件、大小、已用与优先级。
  • 使用 top/htop 实时观察整体资源,并在进程列表看到 SWAP 列(htop 需单独安装)。
  • 使用 /proc/meminfo 读取内核级指标,如 SwapTotal、SwapFree 等,便于脚本化判断。

二 趋势与历史类工具

  • 使用 vmstat 观察分页与换入换出行为:如 vmstat 1 10(每 1 秒刷新、共 10 次),关注 si/so(换入/换出 KB/s);或 vmstat -s | grep swap 查看累计统计。
  • 使用 sar(需安装 sysstat)查看历史与实时:如 sar -W 1 5(每秒 1 次、共 5 次,关注 pswpout/swpot 换出/换入页数),或 sar -r 1(内存与 Swap 使用率)。
  • 使用 dstat --vm 综合展示虚拟内存与 I/O,便于联动分析。

三 进程级定位与可视化

  • 使用 top/htopSWAP 排序定位占用 Swap 较多的进程,结合 RES%CPU 等判断是否为异常内存使用。
  • 使用 GNOME System Monitor / KDE System Monitor 等图形工具,直观查看 Swap 使用趋势与进程占用。

四 一键检查脚本示例

#!/usr/bin/env bash
echo "=== Swap 概览 ==="
free -h

echo -e "\n=== 已启用的 Swap ==="
swapon --show || cat /proc/swaps

echo -e "\n=== Swap 使用率与换入换出 ==="
swp_used=$(free | awk '/Swap/{printf "%.1f", $3/$2*100}')
echo "Swap 使用率: ${swp_used}%"
vmstat 1 3 | tail -n 1

echo -e "\n=== 近期换出活动 sar -W ==="
sar -W 1 5 2>/dev/null || echo "请先安装 sysstat 后使用 sar"

echo -e "\n=== 内核级指标 SwapTotal/SwapFree ==="
grep -E 'SwapTotal|SwapFree' /proc/meminfo
  • 建议将脚本加入 crontab 做定时巡检,并结合阈值(如 Swap 使用率 > 80%)触发告警或扩容评估。

五 监控要点与阈值建议

  • 关注 Swap 使用率si/so 是否持续大于 0,持续换出通常意味着内存压力偏大。
  • 结合 si/so 与业务延迟判断是否由 Swap 引起的性能劣化。
  • 调整 vm.swappiness(默认通常为 60):如将 vm.swappiness=10 可降低换出倾向;临时生效用 sysctl vm.swappiness=10,永久生效写入 /etc/sysctl.conf
  • Swap 使用率长期居高不下,优先评估 增加物理内存、优化应用内存占用或调整 swappiness,必要时再考虑扩容 Swap

0