USE 方法

对每类资源检查三项:利用率(Utilization)、饱和度(Saturation)与错误(Errors);按资源清单逐项排查,系统化定位瓶颈而非凭直觉猜测。

什么是 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% 但队列很短,通常仍在可承受范围内。

易错点

  • 只看利用率不看饱和度,排队已经恶化但判断为「资源还有余量」
  • 资源清单不完整,遗漏网络、文件描述符或连接池瓶颈
  • 忽略错误计数,把资源耗尽类问题当成逻辑 bug 排查
  • 只查单个节点,忽略了集群内其他节点的资源状况差异

数据来源与参考

  • 《性能之巅(第 2 版)》(Gregg):USE 方法
  • Netflix Tech Blog:USE Method
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌