什么是 USE 方法
USE 方法由 Brendan Gregg 提出,用于系统化排查性能瓶颈:对每一类资源依次检查利用率(Utilization)、饱和度(Saturation)与错误(Errors)。利用率看资源被占用的比例,饱和度看是否出现排队等待,错误看是否有失败计数。它的价值在于把「凭直觉猜」变成「按清单逐项过」。
基本信息
| 提出者 | Brendan Gregg(性能分析方法相关著作) |
|---|---|
| 三要素 | 利用率、饱和度、错误 |
| 检查对象 | CPU、内存、磁盘、网络、文件描述符、锁与连接池等 |
| 使用方式 | 先列完整资源清单,再逐项填数据,最后看瓶颈在哪 |
资源与观测项
| 资源 | 利用率 | 饱和度信号 |
|---|---|---|
| CPU | 使用率、运行队列 | 运行队列长度、上下文切换 |
| 内存 | 已用比例、缓存占用 | 换页次数、OOM 计数 |
| 磁盘 | IO 利用率、队列长度 | IO 等待时间、队列积压 |
| 网络 | 带宽占用、包速率 | 重传率、丢包率、连接队列溢出 |
| 文件描述符 | 已用与上限比例 | 分配失败次数 |
典型使用场景
- 线上性能问题初筛:按资源清单过一遍,快速缩小范围
- 容量评估:看利用率与饱和度趋势,判断是否需要扩容
- 故障复盘:结合错误计数,确认是资源耗尽还是逻辑异常
- 日常巡检:把三要素指标做成面板,异常时可直接定位资源
- 压测分析:观察资源在高负载下的饱和度拐点,确定容量上限
- 跨团队沟通:用统一的三要素口径描述问题,减少各说各话
常用观测命令(Linux)
常用观测命令(Linux)
# 利用率(Utilization)
top -b -n1 | head -5 # CPU 总体使用率与负载
vmstat 1 5 # 内存、换页与 CPU 概览
# 饱和度(Saturation)
iostat -x 1 3 # 磁盘利用率 %util 与等待队列 avgqu-sz
sar -n DEV 1 3 # 网络包速率与丢包
# 错误(Errors)
dmesg -T | tail -50 # 内核级错误与 OOM 记录
ss -s # 连接与套接字统计,观察队列溢出先列资源清单再填数据:清单化排查能避免只盯着自己熟悉的两三个指标,遗漏网络、文件描述符或连接池类瓶颈。
利用率高不等于有问题,饱和度高才是排队信号:磁盘利用率 100% 但队列很短,通常仍在可承受范围内。