Linux 性能分析:60,000 毫秒速查
目录
Linux 性能分析:60,000 毫秒速查
本文基于 Netflix Tech Blog 的经典文章整理,提供一份在 60 秒内快速判断 Linux 系统性能瓶颈的实操指引。
目标
在 60 秒 内,使用标准工具快速判断系统是否存在性能瓶颈,以及瓶颈大致在哪个资源(CPU、内存、磁盘、网络)上。适用于生产环境快速排障、容量评估及性能回归初步定位。
60 秒检查清单
按顺序执行以下命令,全面覆盖 CPU、内存、存储、网络四大资源的“使用、饱和、错误”信号。
| |
注意:大部分命令后的
1表示采样间隔为 1 秒,用于观察趋势而非瞬时值。
关键指标解读
1. dmesg | tail
- 关注点:是否有 OOM Kill、I/O error、TCP dropping request、硬件故障报错。
- 意义:如果这里有报错,通常直接指向根因。
2. uptime
- 关注点:
load average(1分钟/5分钟/15分钟)。 - 意义:体现系统整体负载趋势(运行中+等待运行+不可中断进程)。若数值持续超过 CPU 核数,需进一步排查。
3. vmstat 1
- r (Run Queue):就绪队列长度。持续 > CPU 核数,说明 CPU 饱和。
- si/so (Swap In/Out):非零且频繁波动,说明内存严重不足,系统在“抖动”。
- wa (IO Wait):CPU 等待 IO 的比例。高值通常对应磁盘瓶颈。
4. mpstat -P ALL 1
- 关注点:是否存在某一个 CPU 核
%usr或%sys持续 100%,而其他核空闲。 - 意义:排查单线程应用热点或不合理的 IRQ 亲和性设置。
5. pidstat 1
- %CPU:定位具体的 CPU 消耗进程。
- kB_rd/s, kB_wr/s:定位具体的磁盘读写进程。
- %wait:进程在等待 CPU 的时间占比。
6. iostat -xz 1
- r/s, w/s, rkB/s, wkB/s:磁盘读写吞吐量。
- await:平均 IO 请求等待时间(排队+服务)。> 10ms 通常需要关注(取决于硬件类型,SSD 应更低)。
- avgqu-sz:平均请求队列长度。持续 > 1,说明设备饱和。
- %util:设备利用率。接近 100% 说明磁盘满载。
7. free -m
- available:实际可用内存。比
free列更具参考价值。 - buff/cache:系统缓存。占用高通常是好事(加速 IO),除非
available同时也极低。
8. sar -n DEV 1
- rxkB/s, txkB/s:网卡流量吞吐。检查是否达到网卡物理上限。
- rxpck/s, txpck/s:包速率。小包高并发场景下(如 DNS、Redis),PPS 可能是瓶颈。
- dropped/errors:丢包或错误计数。需零容忍,出现即异常。
9. sar -n TCP,ETCP 1
- active/s, passive/s:主动/被动建连速率。
- retrans/s:TCP 重传率。网络拥塞或丢包的直接信号。
- estreset/s:连接重置速率。排查服务端崩溃或防火墙问题。
10. top
- 综合视图:结合
%CPU、%MEM、TIME+找到资源消耗 Top 的进程。 - 状态:关注
Z(僵尸进程) 或D(不可中断睡眠) 状态的进程。
常见异常模式对照表
| 现象 | 关键指标信号 | 可能原因 | 排查方向 |
|---|---|---|---|
| CPU 饱和 | vmstat r > CPU核数mpstat 无空闲 | 计算密集型任务 死循环 | top/pidstat 找热点进程perf 分析热点函数 |
| 内存不足 | vmstat si/so > 0free available 低 | 内存泄漏 配置不当 | pidstat -r检查 JVM/Cache 配置 |
| 磁盘瓶颈 | iostat %util 100%iostat await 高 | 随机 IO 过多 大文件读写 | iotop/pidstat -d 找进程优化 IO 模型 |
| 网络拥塞 | sar retrans/s 高sar dropped > 0 | 带宽跑满 链路丢包 | nicstat/tcpdump检查交换机/防火墙 |
| 单核热点 | mpstat 单核 100%其他核空闲 | 单线程应用 中断绑定不均 | 绑核优化 网卡软中断调优 |
进阶工具
如果 60 秒检查发现了疑点,可使用以下工具进行深挖:
- perf:CPU 指令级热点分析,生成火焰图。
- strace:跟踪进程系统调用,定位阻塞点。
- tcpdump:网络抓包,分析协议细节与时序。
- bpftrace / eBPF:新一代低开销观测技术,内核与用户态全栈追踪。
总结
Linux 性能分析不需要一开始就陷入复杂的细节。遵循USE 方法论(Utilization 使用率, Saturation 饱和度, Errors 错误),通过这 10 个基础命令,你可以在 1 分钟内建立对系统健康状况的全局认知,为后续的精准排查指明方向。