线上服务突然大量超时,你的排查思路是什么?

后端开发第 1 / 13 题答题框架
参考思路:先看监控定位范围(全局/单机/单接口)→依赖排查(DB/缓存/下游)→资源(GC/连接池)→变更回滚。体现『先止血再查因』意识。

五个经典回答示范

回答一 · 校招应届版

我按『先止血再查因』来:先看监控确认范围——全局还是单接口、单机还是所有节点;如果是单接口大概率是该功能依赖出问题,查它的下游调用;全局性的先看最近变更,能回滚先回滚。实习时我遇到一次缓存实例故障引发超时,定位链路是错误日志里连接超时的目标 IP 集中指向该实例。

回答二 · 1-3年经验版

我处理过一次大促前的线上超时。时间线:告警群收到 P2,先看大盘区分是入口层还是服务层;入口层正常但服务层 RT 飙升,下钻依赖拓扑发现 DB 连接池耗尽;临时扩容连接池止血,事后根因是一条未走索引的查询在大数据量下拖垮池子。复盘沉淀了慢查询自动告警和连接池饱和度巡检。

回答三 · 资深版

超时排查我的框架是三张图:依赖拓扑图定位哪一跳、时间线对齐图找变更与故障的时间相关性、容量水位图排除资源瓶颈。处置有分级预案:限流降级保核心、读切备、写异步化。资深与初级的差别不在单次排查,而在有没有把每次故障变成防御建设——预演、预案和自动止损。

回答四 · 追问应对

追问『超时时间怎么设』:按依赖的 P99 加缓冲分级设置,链路上游超时要小于下游总预算,避免无效等待;『重试会不会加重问题』:会,必须配合退避和预算,比如重试一次加 0.5 倍抖动,且设置整体重试预算熔断;『怎么区分网络和服务问题』:tcping 与应用层探活对比。

回答五 · 反面示范

『超时就重启服务,基本都能好,好了之后再看日志,日志太多就开 debug 级别等下次复现。』——点评:重启是遮蔽不是定位,问题会再来;开 debug 级别在流量高峰是二次事故。缺少监控定位范围、变更回滚、依赖下钻的基本功。

怎么练这道题
  1. 打开 模拟练习,选择「后端开发」方向,限时 3 分钟作答本题。
  2. 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
  3. 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。

这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。

开始限时演练