← 返回题目列表

接口突然变慢,如何用可观测性体系排查?

高频 困难 第 15 / 26 题 更新于 2026/07/28
排障链路追踪指标日志

简化版

接口突然变慢时,先看指标确认影响范围:是单接口、单服务、单机房还是全局;再看 P95/P99、错误率、QPS、资源和依赖指标;然后用链路追踪找慢 Span,判断慢在网关、业务逻辑、数据库、缓存、RPC 还是 MQ;最后用日志查看错误码、参数特征和上下文,并结合发布、配置变更和下游状态定位原因。

核心思路是:指标看范围和趋势,Trace 看调用路径和耗时,日志看具体事件和业务细节。

详细版

排查不能一上来就猜数据库或重启服务。第一步要确认问题范围:所有用户都慢还是部分用户慢,所有接口慢还是某个接口慢,所有实例慢还是某几台实例慢,是否刚发布、刚改配置、流量是否突增。

第二步看指标。接口 QPS、错误率、P99 延迟、线程池队列、连接池、CPU、GC、数据库慢查询、Redis 延迟、MQ 积压都可能提供线索。第三步查 Trace,找慢请求样本,看耗时集中在哪个 Span。第四步看日志,确认错误码、请求参数、下游响应和异常堆栈。

最后要把结论落到处置动作:回滚发布、调整配置、限流降级、扩容、修复慢 SQL、切换下游、清理热点 Key 等。可观测性不是为了看图,而是为了快速定位和恢复。

完整版教学

一、先确认影响范围

排障第一步不是找原因,而是确定影响范围。范围决定优先级和排查路径。

要问:

  1. 是所有接口慢,还是某个接口慢。
  2. 是所有用户慢,还是某类用户慢。
  3. 是所有实例慢,还是某几台实例慢。
  4. 是所有机房慢,还是单机房慢。
  5. 是从什么时候开始慢,是否关联发布或配置变更。

范围越清楚,排查越不容易走偏。

二、用指标看趋势

指标能快速判断问题形态。比如 QPS 突增说明可能是流量冲击;错误率升高说明可能有依赖故障;P99 升高但平均值正常说明尾延迟问题;CPU 不高但线程池队列堆积说明可能阻塞在下游。

接口层看 RED:请求量、错误率、耗时。资源层看 USE:使用率、饱和度、错误。依赖层看数据库、缓存、RPC、MQ 指标。

指标用于把问题从“感觉慢”变成“哪类指标异常”。

三、用 Trace 找慢在哪里

找到慢请求样本后,打开 Trace。看整条链路中哪个 Span 耗时最高,是否有重试、超时、排队、跨机房调用。

常见情况:

  1. 网关 Span 慢:可能限流、鉴权、网络或入口排队。
  2. 业务服务 Span 慢:可能线程池、锁、GC、代码逻辑。
  3. 数据库 Span 慢:可能慢 SQL、锁等待、连接池耗尽。
  4. Redis Span 慢:可能大 Key、热 Key、网络抖动。
  5. RPC Span 慢:可能下游服务或网络问题。
  6. MQ Span 慢:可能消费积压或异步链路延迟。

Trace 的价值是把总耗时拆开。

四、用日志看具体细节

Trace 告诉你慢在哪一段,日志告诉你那一段发生了什么。通过 TraceId 查询日志,可以看到请求参数、业务分支、错误码、异常堆栈、下游返回和关键状态。

日志要帮助确认具体原因。例如数据库慢是因为哪个 SQL,库存失败是因为哪个商品 ID,缓存异常是哪个 Key,RPC 错误是超时还是连接失败。

没有日志细节,Trace 只能告诉你慢在某个服务,不能解释业务原因。

五、结合变更和依赖状态

很多故障和变更相关。排查时要看最近是否有代码发布、配置变更、扩缩容、注册中心变更、数据库变更、缓存迁移、网络调整。

如果问题开始时间和某次发布高度吻合,回滚可能是最快恢复手段。先恢复,再深挖原因,通常比在线上长时间分析更安全。

依赖状态也很重要。自己的服务变慢,根因可能是下游数据库或第三方接口。

六、从定位到处置

排查不是为了写报告,而是为了恢复服务。不同原因对应不同动作:

  1. 流量突增:限流、扩容、降级。
  2. 慢 SQL:回滚查询、加索引、临时降级相关功能。
  3. 下游超时:熔断、缩短超时、切换备用依赖。
  4. 热点 Key:本地缓存、请求合并、热点限流。
  5. 发布问题:回滚版本。
  6. 线程池耗尽:隔离下游、调整队列和并发。

可观测性要能支持这些动作的选择。

七、面试回答建议

回答这道题时,按“范围 → 指标 → Trace → 日志 → 变更 → 处置”顺序。这样非常像真实值班排障流程。

不要一上来就说查日志。日志是细节,指标和 Trace 能更快确定方向。也不要只定位原因,要说如何恢复。

八、常见追问和落地边界

面试官常追问如果 Trace 没采到怎么办。此时要回到指标和日志:先用指标确认异常维度,再用日志按错误码、实例、版本、用户类型等过滤。如果是关键故障,可以临时提高采样率,复现或等待下一批异常样本。

还有一个落地边界是先恢复再复盘。线上接口严重变慢时,如果已经明确和某次发布或配置变更相关,优先回滚或降级恢复服务;可观测性帮助你定位,但不应该让团队为了追求根因分析而拖延止血。

九、常见误区与追问

这道题要紧扣「用可观测性排障」本身回答,不能把它混成泛泛的可观测性套话。面试官通常会沿着“为什么需要、流程怎么走、失败怎么兜、代价是什么”继续追问,所以回答要覆盖日志、指标、追踪、上下文传播、采样、告警和排障闭环。

回答层次要讲清的内容容易漏掉的边界
核心结论排障要从告警定位影响,再用指标看范围、Trace 找慢点、日志查细节,最后验证恢复不要停在名词解释
流程机制收到告警 -> 确认影响范围 -> 看指标定位服务 -> 用 Trace 找调用瓶颈 -> 查日志和变更 -> 止血并验证恢复要说清触发点、状态变化、确认点和失败兜底
工程取舍下单错误率从 0.1% 升到 5%,先看是否单接口、单机房或单版本,再钻 Trace 和日志可观测性不能替代稳定性设计,它用额外采集、存储和分析成本换更快定位问题
用可观测性排障 面试拆解:
1. 收到告警
2. 确认影响范围
3. 看指标定位服务
4. 用 Trace 找调用瓶颈
5. 查日志和变更
6. 止血并验证恢复

记忆钩子:先给结论,再拆流程,再讲数字例子和失败边界;回答「用可观测性排障」时要围绕题目问法收束,不要把相邻概念堆成一段没有重点的名词清单。

  • 误区:排障就是先看日志。 日志细但范围感弱,通常先看指标定位范围,再用 Trace 和日志深入。
  • 误区:只有异常才需要可观测性。 慢请求、流量突增、依赖饱和也需要指标和 Trace。
  • 误区:找到报错服务就等于找到根因。 报错可能是下游依赖、配置变更或容量问题传导。
  • 追问:三板斧是什么? 指标看范围,Trace 看路径,日志看细节。
  • 追问:如何关联一次故障? 按时间线把发布、流量、错误率、依赖状态和告警串起来。
  • 追问:止血动作有哪些? 回滚、降级、限流、扩容、摘除实例和切换依赖。

十、加强记忆

排查慢接口可以记成“三把手电筒”:指标照大范围,Trace 照调用路径,日志照具体细节。

先看影响面,再找慢在哪,再看为什么慢,最后选择恢复动作。