延迟、吞吐、错误、饱和度这四个黄金指标,是Google SRE团队总结的监控体系核心,分别回答“慢不慢”“多不多”“坏不坏”和“满不满”这四个问题,是衡量任何在线系统健康度的通用标尺。
这四个指标之所以被称为“黄金”,是因为它们抓住了系统性能与稳定性的全部关键维度,单纯看CPU使用率或内存占用,往往在故障发生时才后知后觉;而通过这四类指标的组合,你能在用户察觉之前发现问题,甚至在故障发生前预判风险。
四个黄金指标分别指什么:从字面到实战
要真正理解这四个指标,不能只背定义,得知道它们各自在真实业务场景中代表什么,以及它们之间微妙的关系。
延迟:用户等待的每一毫秒都是钱
延迟(Latency)指的是一个请求从发出到收到响应所耗费的时间,它衡量的是“快不快”,但这里有一个容易踩的坑:平均值毫无意义,如果你的接口平均延迟是100毫秒,但p99(99%的请求在1秒内完成)延迟到了2秒,意味着每100个用户里就有1个人在忍受卡顿,对一个日活百万的产品来说,那就是一万个糟糕体验的样本。
- 核心关注对象:p90、p95、p99延迟,以及长尾请求(比如p99.9)。
- 实操建议:监控延迟时,务必分接口、分业务线、分用户区域看,比如国内跨运营商(移动连电信)的延迟,和同运营商内网延迟完全是两个世界,在百度搜索相关问题时常有人问“延迟和吞吐量有什么区别”,后文会展开对比。
吞吐:系统真正能干多少活
吞吐(Traffic/Throughput)通常指单位时间内系统处理的请求数或数据量,它衡量的是“量够不够”,常见单位有QPS(每秒查询数)、TPS(每秒事务数)或带宽吞吐(如MB/s),吞吐量高不代表系统快,它只代表系统在处理流量,哪怕这些请求处理得很慢。
- 核心关注对象:QPS峰值、日均吞吐量、带宽使用率。
- 实操建议:关注吞吐的形态比关注数值本身更重要,如果吞吐曲线是一条平线,峰值和谷底差别不大,说明流量很稳;如果吞吐曲线像过山车,你得确保扩容和限流策略能跟上陡增的坡度,否则系统容易在瞬间被打垮。
错误:所有异常的最终出口
错误(Errors)指的是请求失败的数量或比例,包括HTTP 5xx错误、业务逻辑错误码、超时次数等,它是用户能直接感知的“坏”,错误率是衡量系统可用性的关键权重指标,这里容易忽略的是隐性错误:比如返回了HTTP 200,但响应体是空的,或者返回了一段错误提示的JSON,这类错误不监控,等于埋雷。
- 核心关注对象:HTTP 5xx比例、4xx比例(注意区分是攻击还是客户端问题)、超时率、业务错误码计数

。
- 实操建议:按错误类型设置不同级别的告警,轻微的4xx错误(比如用户输错密码)不需要半夜叫醒运维,但5xx错误率一旦超过某个阈值(比如1%),必须即时触发紧急响应。
饱和度:系统还能撑多久
饱和度(Saturation)衡量系统资源被利用的程度,核心是排队中的任务量或资源耗尽前的余量,它回答的是“满不满”,最典型的例子是负载均衡器的连接数满了,请求在队列里排队等待,此时CPU可能才用到50%,但系统已经无法响应新请求。
- 核心关注对象:CPU使用率、内存水位、磁盘I/O等待时间、线程池队列长度、数据库连接池占用率。
- 实操建议:饱和度是预警信号,而非事后指标,比如定义磁盘使用率超过80%就要告警,因为清理日志、迁移数据都需要时间,等满了再处理就晚了,在四大黄金指标中,饱和度是唯一一个需要人为设定余量阈值的指标。
延迟和吞吐量有什么区别:一对相爱相杀的搭档
这是搜索引擎里最常见的对比词之一,很多人把二者混为一谈,其实它们的关系可以用一个简单场景说清:延迟决定你玩游戏卡不卡,吞吐决定游戏服务器能容纳多少玩家同时在线,两者并非孤立,它们互相牵连。
| 维度 | 延迟 | 吞吐 |
|---|---|---|
| 定义 | 单个请求耗费的时间 | 单位时间处理的请求总数 |
| 衡量单位 | 毫秒/秒 | QPS/TPS/带宽 |
| 敏感度 | 对用户体验极度敏感 | 对系统容量极度敏感 |
| 核心矛盾 | 追求极致的快 | 追求极致的量 |
| 联动关系 | 当吞吐逼近系统上限,延迟往往会飙升 | 延迟变高,会反过来拖累吞吐的表现 |
举个例子:一个接口QPS吞吐能做到5000,但此时p99延迟已经达到了3秒,用户根本等不及,在这种情况下,吞吐达标了,但延迟指标击穿了底线,系统整体是不健康的。具体到监控实战,务必将延迟和吞吐放在同一张报表里看,对照曲线变化趋势,才能准确判断系统当前处在哪个阶段。

错误率飙升怎么定位:三分法排查思路
高错误率不等于系统要挂了,关键在于区分错误类型,这里分享一套业内通用的排查思路,按“协议层 - 应用层 - 依赖层”三个维度逐步筛查,这套方法在很多面向Google SRE实践的文章中都有提及,属于行业共识。
- 先看协议层:是不是有大量的连接超时、SSL握手失败、拒绝连接?如果是,大概率是网络抖动、防火墙拦截或入口负载(比如Nginx)的连接数被打满。
- 再看应用层:是不是业务代码报出大量异常?重点看错误日志里的栈信息,以及日志的聚合度,如果90%的错误集中在某个特定接口,那就是该接口逻辑出了问题;如果错误分散在所有接口,那问题可能出在底层公共组件上,比如数据库连接池泄漏或缓存服务不可用。
- 后看依赖层:调用外部服务(如第三方支付、短信通道)的失败率是否上升?下游一抖动,上游必然报错,此时需要检查依赖方接口的慢响应率和熔断状态。
定位到具体故障类别后,结合饱和度指标看该服务的CPU、内存、磁盘I/O是否已到瓶颈,就能形成一条完整的证据链。
搭建一套实用的黄金指标监控体系:实操落地
理论聊完,重点谈落地,很多人问“搭建监控系统难不难”,其实建一套覆盖四大黄金指标的监控体系,成本远比想象中低,比较主流的开源方案是Prometheus + Grafana,这套组合在业内使用非常广泛,核心操作路径如下:
- 埋点规范:在应用代码中引入客户端库,对每个HTTP接口记录耗时(延迟)、请求次数(吞吐)、状态码(错误),务必给每个指标打上标签,
method="GET"、endpoint="/api/v1/order"、region="beijing"。没有标签的指标,等于白搭以后想按业务线、按机房维度排查问题时,就会因为缺少标签而无法聚合。 - 告警规则分级:告警不是越灵敏越好,要在“漏报”和“误报”之间取得平衡。
- P1级(立即处理):错误率大于5%持续3分钟,或者p99延迟超过1000毫秒持续5分钟。
- P2级(工作时间处理):CPU饱和度超过80%持续15分钟,或磁盘使用率超过85%。
- P3级(记录观察):吞吐量QPS相较上周同期下降30%以上(可能意味着链路被切断或流量漏斗异常)。
- 定期演练:监控搭建好需要“喂数据”验证,团队可以每季度搞一次故障注入演练,人为模拟慢查询、杀进程、断网络,看告警能否准确触发。
在百度搜索相关需求时,有相当一部分人关注“监控系统方案价格对比”,这里给出一个参考口径:纯开源方案,单台ECS + 2C4G的Prometheus实例,能支撑上百个节点的指标采集,软件成本为零

,主要成本在于人工搭建和后期维护,简米云ARMS或酷番云云监控这类商业化产品,更省心,价格根据数据量在每月几十到几百元不等。
四个黄金指标重新定义:从单点指标到系统语言
最后把这些概念整合一下,这四个指标本质上是一种沟通语言研发说“接口变慢了”太模糊;研发说“p99延迟从200毫秒升到了800毫秒,错误率同步攀升到4%,且线程池队列饱和度已到90%”,运维立刻能听出问题的严重级别。黄金指标的实战意义,在于把系统的非理性状态,翻译成理性、可量化、可决策的数字。
在日常排障中,请记住这套做题顺序:
- 先看吞吐是否突降或突增(流量有没有异常波动);
- 再看错误率是否上升(有没有请求处理失败);
- 接着看延迟是否恶化(能成功响应,但响应是否慢到不可接受);
- 最后确认饱和度水位(各类资源还有没有富余,要不要限流或扩容)。
这四个步骤走完,绝大多数性能问题的苗头和根因定位,都能做到八九不离十。
Q&A:黄金指标应用常见疑问解答
延迟、吞吐、错误、饱和度,哪个指标最优先关注?
没有绝对的优先级,但要看你所处的角色。 如果是后端研发,首要盯紧错误率哪怕延迟极低、吞吐极高,只要有错误,就代表结果不正确,属于功能性缺陷,如果是SRE或运维负责人,首要盯紧饱和度这是唯一能提前预知风险并阻止故障发生的指标,延迟和吞吐属于日常性能优化的范畴,通常在系统稳定运行后持续打磨。
如何在低流量业务中应用这四个指标?
低流量场景下,QPS个位数意味着p95等延迟百分位数波动极大,单个慢请求就会让平均值失真,行业共识的处理办法是拉长观测窗口,将聚合周期从1分钟扩展为5分钟或10分钟,同时在告警策略上,不要直接用绝对数值兜底,而是用百分比阈值(比如错误率不能超过2%)加最小请求量门槛(比如每分钟请求量低于50时,不采用延迟告警),作为综合判断逻辑。
黄金指标在数据库和中间件监控上适用吗?
完全适用,只是需要稍微调整关注对象。 对数据库而言,慢查询日志的条数和执行时间就是延迟指标;连接的查询执行数就是吞吐;主从复制中断状态就是错误;连接数使用率和磁盘空间就是饱和度,对消息队列(如Kafka/Redis)而言,消息堆积数量是典型的饱和度指标,消费失败次数是错误指标,生产消费速率是吞吐,逐一套用,体系本身是不变的。