服务器变慢、响应延迟增加,问题往往藏在 CPU、内存、磁盘、网络四大资源的某一处。htop 和 glances 是两款界面友好的资源监控工具,能让你在几秒钟内找到高占用的进程和资源瓶颈,比传统的 top 体验好得多。本文介绍两款工具的安装、核心指标解读与实战技巧。
本文要点
- htop:交互式进程监控,快速定位高 CPU/内存进程
- glances:全面的系统概览,一屏看完 CPU/内存/磁盘/网络/进程
- 掌握关键快捷键,大幅提升排查效率
- 结合
iostat和netstat做补充分析
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 average | 1/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:61208glances 核心面板
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) 如果是网络流量异常,用 iftop 或 nethogs 定位 → 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 top 或 dstat -t 做更细粒度分析,或检查是否有频繁的 cron 任务。