SRE命令行兵器谱之一:精通top/htop – 从性能“体检”到瓶颈“解剖”
SRE的“战场”:真实故障场景
下午三点,监控系统告警:“核心API服务响应时间(P99)飙升至5秒”。用户已经开始在群里抱怨接口超时。这是一个典型的线上性能问题,每一秒的延迟都在影响用户体验和公司收入。
作为负责的SRE,你登录到服务器,敲下的第一个命令,几乎必定是 
top
系统是否过载?瓶颈是CPU计算能力,还是其他地方?如果是CPU,是哪个进程在“燃烧”它?如果不是CPU,是什么在“拖慢”整个系统?
top
top
top
运行 
top
top - 15:30:01 up 10 days,  4:15,  1 user,  load average: 1.10, 1.50, 1.25
Tasks: 250 total,   1 running, 249 sleeping,   0 stopped,   0 zombie
%Cpu(s): 12.5 us,  2.5 sy,  0.0 ni, 45.0 id, 40.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8192000 total,  4192000 free,  2000000 used,  2000000 buff/cache
KiB Swap:  2048000 total,  2048000 free,        0 used.  5192000 avail Mem
第一步:分析全局摘要(前五行),确定问题方向
load average: 1.10, 1.50, 1.25
输出解读:代表过去1、5、15分钟的平均负载。它衡量的是正在运行和**正在等待(比如等待CPU、等待I/O)**的进程总数。这个数值必须结合CPU核心数来看才有意义:如果长期高于核心数,说明系统已“交通堵塞”,CPU资源不足。SRE思维过程:“假设这是一台4核CPU的服务器。当前负载在1.5左右,远低于4。这说明系统没有因为CPU资源不足而排队。问题可能不出在CPU核心数量不够上。但负载又不低,说明系统确实在‘忙’。”
%Cpu(s): 12.5 us,  2.5 sy, 45.0 id, 40.0 wa, ...
输出解读:这是描述CPU整体状态的关键行,不针对任何单个进程。
us
sy
id
wa
SRE思维过程:“这是关键线索! 
id
wa
反向思考:如果CPU是“真”的忙呢?
如果我们看到的是 
%Cpu(s): 85.0 us, 2.5 sy, ... 0.3 wa
SRE思维过程:“高达85%的 
us
perf
jstack
第二步:分析进程列表,锁定嫌疑元凶
在第一步确定了问题是“I/O等待”后,我们才带着这个结论去审视下面的进程列表,目的是找出**“谁最可能是造成这个全局高I/O等待的进程?”**
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
12345 mysql     20   0 2512345 1.2g   1234 S  25.0 15.0  12:34.56 mysqld
 5678 myapp     20   0 1812345 0.8g   5678 S   5.0 10.0   5:12.34 java -jar myapp.jar
...
观察:
mysqld
%CPU
%wa
mysqld
%wa
%CPU
myapp
形成假设与验证路径
核心假设:应用 
myapp
mysqld
SRE思维过程(规划下一步):
“我需要验证是哪个进程在产生大量的磁盘I/O。
top
mysqld
iotop
pidstat -d 1
iotop
mysqld
mysql -e "SHOW FULL PROCESSLIST;"
Time
State
EXPLAIN
htop
htop
虽然 
top
htop
强烈建议:如果条件允许,花一分钟时间 
sudo apt install htop
sudo yum install htop
速查表与避坑指南
| 指标/操作 | SRE实战场景与思考 | 
|---|---|
|  | 判断是否过载。核心数是关键参照物,负载持续高于核心数说明CPU资源紧张。 | 
| (I/O Wait) | 瓶颈甄别的黄金指标。高 意味着瓶颈在磁盘/网络,应立即转向,等工具。 | 
| vs | 区分问题来源。高 是应用程序的锅,高则可能是内核I/O、驱动或系统调用频繁。 | 
|  | 效率工具。用它来替代 进行日常排查,操作更直观、快捷。 | 
| 按 (在top/htop中) | 多核视角。查看每个CPU核心是否负载均衡。如果只有一个核心被打满,可能说明应用是单线程的。 | 
你现在不仅学会了如何看懂 
top
但是,
top
top
lsof
 
                
 
                 
                 
                





 
                