服务器变慢、响应延迟增加,问题往往藏在 CPU、内存、磁盘、网络四大资源的某一处。htopglances 是两款界面友好的资源监控工具,能让你在几秒钟内找到高占用的进程和资源瓶颈,比传统的 top 体验好得多。本文介绍两款工具的安装、核心指标解读与实战技巧。

本文要点

  • htop:交互式进程监控,快速定位高 CPU/内存进程
  • glances:全面的系统概览,一屏看完 CPU/内存/磁盘/网络/进程
  • 掌握关键快捷键,大幅提升排查效率
  • 结合 iostatnetstat 做补充分析

htop:交互式进程监控

安装

# Debian/Ubuntu
apt install -y htop

# CentOS/AlmaLinux
yum install -y htop   # 或 dnf install htop

# 启动
htop

界面解读

htop 界面分为顶部概览区和进程列表区:

区域含义异常判断
CPU 条形图各核心使用率(不同颜色区分用户/内核/IO等待)长期 >80% 需关注
Mem 条形图物理内存使用情况(绿=应用,蓝=缓冲,橙=缓存)实际应用占用 = 绿色部分
Swp 条形图Swap 使用量持续增长说明内存有压力
Load average1/5/15 分钟平均负载大于 CPU 核数说明过载
进程列表按 CPU% 或 MEM% 排序找出高占用进程

常用快捷键

按键功能
F6 或 >切换排序列(CPU%/MEM%/PID 等)
F5切换树状视图,查看父子进程关系
F4按进程名过滤(如只看 nginx 相关进程)
F9 或 k向选中进程发送信号(如 kill)
Space标记多个进程
u只显示某个用户的进程
q退出

Load Average 的正确解读

Load average 表示运行队列中的平均进程数。对于 2 核 VPS,负载均值 2.0 表示 CPU 恰好满负载,持续 >4.0 才算严重过载。短暂高峰不用担心,持续高载才需要排查。

glances:全局系统监控

安装

# pip 安装(推荐,版本较新)
pip3 install glances

# 或系统包
apt install -y glances

# 启动
glances

# Web 界面模式(可远程浏览器访问)
glances -w
# 访问 http://你的IP:61208

glances 核心面板

glances 一屏展示全部关键指标,适合快速全局扫描:

  • CPU/MEM/SWAP:顶部总览,颜色表示警戒级别(绿/橙/红)
  • Network:各网卡当前上下行速率
  • DiskIO:磁盘读写速率,快速发现 I/O 密集进程
  • FS:各文件系统使用率,避免磁盘爆满
  • Processes:按 CPU 或内存排序的进程列表
  • Alerts:glances 会自动高亮超过阈值的指标

glances 实用命令

# 以 CSV 格式记录系统状态(适合日志分析)
glances --export csv --export-csv-file /tmp/server_stats.csv

# 指定刷新间隔(秒)
glances -t 5

# 只显示特定插件
glances --disable-plugin=docker,cloud

补充工具:定位具体瓶颈

# 实时磁盘 I/O(按进程)
iotop -ao

# 实时磁盘 I/O 统计
iostat -x 1

# 网络连接统计
ss -s

# 查看内存详细分布
free -h && cat /proc/meminfo | head -20

# 查看哪个进程占用端口
ss -tlnp | grep LISTEN

排查高负载的标准流程

1) htop 查看 CPU/内存高占进程 → 2) 如果是磁盘 I/O 高,用 iotop 定位 → 3) 如果是网络流量异常,用 iftopnethogs 定位 → 4) 找到进程后,查看进程日志找根本原因。

小结

  • htop 是进程级排查的首选,F6 排序 + F4 过滤是核心操作
  • glances 提供全局一览,适合日常巡检和发现异常模式
  • Load average 持续大于 CPU 核数才算真正过载
  • iotop/iostat 补充磁盘 I/O 细节,ss 补充网络连接信息

常见问题

htop 显示内存几乎用完,但系统没有变慢,正常吗?

正常。Linux 会将空闲内存用于磁盘缓存(htop 中蓝/橙色部分),这是正常的内存管理策略。真正的问题是 Swap 使用率持续上升或进程因 OOM 被杀。

glances web 模式端口 61208 无法访问?

确认防火墙已放行 61208 端口:ufw allow 61208。生产环境建议不要长期开放,排查完后关闭,或配置 Nginx 反向代理并加密码保护。

CPU 负载飙高但 htop 里没有明显高占用进程?

可能是大量短暂进程频繁创建销毁,htop 刷新间隔来不及捕获。可用 perf topdstat -t 做更细粒度分析,或检查是否有频繁的 cron 任务。