温馨提示×

怎样监控debian swap使用

小樊
38
2026-10-10 22:08:33
栏目: 智能运维

在 Debian 上监控 swap 使用 可以从“实时查看”“历史趋势”“进程级分析”三个层面来做。下面按实用程度给你一套方案。


一、快速查看当前 swap 使用情况

1. free

free -h

重点看:

  • Swap: 行的 total / used / free

示例:

Swap:   2.0Gi   512Mi   1.5Gi

2. swapon

查看 swap 设备和启用状态:

swapon --show

或

cat /proc/swaps

3. top / htop

实时看整体 swap:

top

或(更友好):

htop
  • 顶部显示 swap 总量和使用量
  • 按 F6 → 选 SWAP 排序,看谁在用 swap

二、进程级:谁在用 swap(重点)

4. 查看每个进程的 swap 占用

for pid in $(ls /proc | grep '^[0-9]'); do
  swap=$(awk '/VmSwap/{print $2}' /proc/$pid/status 2>/dev/null)
  [ "$swap" ] && echo "PID:$pid Swap:${swap} kB"
done | sort -k2 -n -r

或更简单:

grep VmSwap /proc/*/status | sort -k2 -n -r | head

5. smem(推荐)

安装:

apt install smem

查看 swap 使用:

smem -s swap -r

或按用户:

smem -u -s swap

三、长期监控(服务器必备)

6. sar(sysstat)

安装:

apt install sysstat

启用:

systemctl enable --now sysstat

查看 swap 历史:

sar -S

或某一天:

sar -S -f /var/log/sysstat/saXX

7. Prometheus + node_exporter(生产环境)

  • node_exporter 暴露:
    • node_memory_SwapTotal_bytes
    • node_memory_SwapFree_bytes
  • Grafana 可画长期趋势图

四、判断 swap 是否正常

8. 看 swap 使用率 + 是否频繁 swap

vmstat 1

关注:

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

如果长期 > 0,说明内存不足。


五、常见问题排查思路

  • swap 用了很多但内存还有?

    • 可能是 swappiness 太高
    • 查看:
      cat /proc/sys/vm/swappiness
      
    • 临时调低:
      sysctl vm.swappiness=10
      
  • swap 一直涨不降?

    • 进程没释放
    • 只能重启相关进程

如果你愿意,可以告诉我:

  • 是 桌面还是服务器
  • 是否 长期运行
  • 是否已用 Docker / K8s

我可以给你一套更精确的监控配置。

0 踩