USE 方法是什么
USE 是 Brendan Gregg 提出的资源性能分析方法:对每一个资源都问三个问题,使用率有多高、是否已经饱和、有没有出错。它的价值在于把机器为什么慢这类模糊问题拆成可逐项核对的清单,避免只盯着 CPU 一个指标反复打转,也避免遗漏真正紧张的那类资源。
基本信息
| 提出者 | Brendan Gregg(Systems Performance 作者) |
|---|---|
| 适用范围 | CPU、内存、磁盘、网络、连接池、线程池等一切有限资源 |
| 三个维度 | Utilization 使用率、Saturation 饱和度、Errors 错误数 |
| 配套方法 | 请求侧用 RED,两者分别覆盖服务与资源两端 |
典型使用场景
- 主机变慢排查:按资源清单逐项确认,快速排除无关项
- 容器资源限制评估:对比 limit 与实际使用率,判断是否频繁触顶
- 容量规划:使用率长期趋势与饱和事件频次共同决定扩容时机
- 数据库性能分析:连接池使用率、慢查询排队、锁等待三项组合判断
- 网络问题定位:带宽占用、TCP 重传与丢包、网卡错误计数
资源速查
| 资源 | 使用率 Utilization | 饱和度 Saturation | 错误 Errors |
|---|---|---|---|
| CPU | 非 idle 时间占比 | 运行队列长度与 load | 内核报告的错误,较少见 |
| 内存 | 已用占总量的比例 | swap 换入换出速率 | OOM 事件与分配失败 |
| 磁盘 | IO 繁忙时间占比 | IO 队列深度与等待时长 | 读写错误计数 |
| 网络 | 带宽占用比例 | TCP 重传、丢包、队列积压 | 接口错误与丢弃计数 |
常见饱和信号查询
常见饱和信号查询
# 磁盘繁忙程度:接近 1 表示设备几乎一直在服务 IO
rate(node_disk_io_time_seconds_total[5m])
# 每核负载近似值
node_load1 / count by (instance) (node_cpu_seconds_total{mode="idle"})
# 可用内存变化斜率:持续为负说明内存在被持续消耗
deriv(node_memory_MemAvailable_bytes[30m])先看饱和再看使用率:高使用率未必出问题,但一旦出现排队(饱和),延迟就会立刻上升,因此饱和是更接近症状的信号。
内存使用率有口径差异:Linux 上优先看 MemAvailable 而不是 MemFree,用 MemFree 判断会长期误报内存不足。