温馨提示×

如何监控CentOS Swap使用

小樊
39
2026-08-18 10:04:45
栏目: 智能运维

在 CentOS 系统中,监控 Swap(交换分区) 的使用情况,常用方法如下,从“快速查看”到“持续监控”逐步说明。


一、快速查看 Swap 使用情况

1️⃣ 使用 free

最常用、最直观:

free -h

示例输出:

              total        used        free      shared  buff/cache   available
Mem:           7.8G        2.1G        1.2G        120M        4.5G        5.2G
Swap:          2.0G        512M        1.5G

✅ 关注:

  • Swap total:Swap 总量
  • Swap used:已使用 Swap
  • Swap free:剩余 Swap

2️⃣ 使用 swapon

查看 Swap 设备及使用情况:

swapon --show

示例:

NAME      TYPE      SIZE USED PRIO
/dev/sda2 partition 2G   512M   -2

3️⃣ 查看 /proc/meminfo

更底层的信息:

cat /proc/meminfo | grep -i swap

常见字段:

  • SwapTotal
  • SwapFree
  • SwapCached

二、查看哪些进程在使用 Swap

4️⃣ 使用 top

top

进入后:

  • f
  • 找到 SWAP 字段
  • 空格 启用
  • Enter

即可看到每个进程的 Swap 使用量。


5️⃣ 使用 htop(推荐)

如果未安装:

yum install -y htop
htop
  • 在列中启用 SWAP
  • 非常直观,颜色显示

6️⃣ 使用 smem(最准确)

yum install -y smem
smem -t -k

或查看 Swap 占用的进程:

smem -s swap -t -k

三、持续监控 Swap

7️⃣ 使用 vmstat

vmstat 1

关注:

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

✅ 说明:

  • 如果 si / so 长期不为 0,说明系统频繁使用 Swap,性能可能已受影响。

8️⃣ 使用 sar(sysstat 工具)

安装:

yum install -y sysstat

查看 Swap 使用历史:

sar -S 1 5

输出示例:

01:00:01 PM kbswpfree kbswpused  %swpused
01:00:02 PM   1572864    524288     25.00

四、设置 Swap 使用告警(实用)

9️⃣ 设置 Swap 使用阈值告警(Shell 示例)

SWAP_USED=$(free | awk '/Swap/{print $3}')
SWAP_TOTAL=$(free | awk '/Swap/{print $2}')

if [ "$SWAP_TOTAL" -gt 0 ]; then
  USAGE=$((SWAP_USED * 100 / SWAP_TOTAL))
  if [ "$USAGE" -gt 80 ]; then
    echo "Swap usage over 80%: ${USAGE}%"
  fi
fi

可加入:

  • cron
  • Zabbix / Prometheus 告警

五、Swap 使用异常的常见原因

现象 可能原因
Swap 持续增长 内存不足
si/so 很高 内存抖动
进程占用大量 Swap 内存泄漏
数据库使用 Swap 配置不合理

六、调优建议(重要)

查看 Swappiness

cat /proc/sys/vm/swappiness
  • 默认:60
  • 建议:
    • 数据库服务器:1~10
    • 桌面 / 通用:10~30

临时修改:

sysctl vm.swappiness=10

永久生效:

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

七、总结(推荐组合)

日常监控

free -h
swapon --show

排查问题

top / htop
vmstat 1

生产环境

  • sar
  • Zabbix / Prometheus + node_exporter

如果你愿意,我可以:

  • ✅ 给你 Zabbix / Prometheus 监控 Swap 的配置
  • ✅ 帮你分析 Swap 使用高的具体进程
  • ✅ 给你 CentOS 7 / 8 的 Swap 优化配置

只要告诉我你的使用场景即可。

0