Skip to content

线上问题排查实战与面试 ​

目标:线上出问题知道先看哪,能把「指标 / 日志 / 链路」讲成人话,不背名词表。


面试高频问法 ​

  1. 线上接口变慢,你怎么排查?
  2. 服务 CPU/内存打满怎么查?
  3. 你们监控看哪些核心指标?告警怎么做?
  4. 日志一般看什么字段?会不会把敏感信息打进日志?
  5. 有没有做过一次真实故障复盘?

口述参考(短版) ​

排查顺序(实用版):

  1. 先确认范围:单个用户 / 单个接口 / 全站?从什么时间开始?
  2. 看可用性:服务是否存活、实例是否重启、部署是否刚好发生
  3. 看黄金信号:延迟、流量(QPS)、错误率、饱和度(CPU/内存/连接数)
  4. 看日志:错误堆栈、慢 SQL、超时、依赖调用失败
  5. 再下钻:线程、GC、DB、Redis、下游超时

可观测三件套(人话):

  • 指标:现在快不快、错不多、资源紧不紧
  • 日志:具体报了什么错
  • 链路追踪(有的话):慢在哪一跳

面试有 Prometheus/Grafana/ELK 经验就点名;没有就强调排查思路,比堆产品名重要。


实战:一套最小可用监控心智 ​

应用最少要暴露的感觉 ​

  • 接口 QPS、P95/P99 耗时、5xx 比例
  • JVM:堆内存、GC 次数/耗时(Java 岗很常见)
  • 依赖:DB/Redis 连接、超时次数

日志最少规范 ​

  • 带 traceId/requestId(没有也要说「应该有」)
  • 错误打堆栈,但密码、token、身份证不要明文
  • 关键路径单独关键字,方便 grep

告警最少原则 ​

  • 告警要能行动:不是「CPU 高了」就完,要知道找谁、先看哪
  • 先保命:服务挂、错误率飙升、磁盘满
  • 避免告警风暴:合并、降噪、分级

一道题练口述:接口突然变慢 ​

可以这样答:

先确认是否刚发版、是否个别接口。然后看该接口耗时和错误率,再看 DB/Redis 耗时。若是慢 SQL 就 explain 和索引;若是下游超时就看依赖和线程是否打满;同时用日志定位具体异常。处理完会补监控项和告警,避免同样问题第二次才发现。


结合你简历怎么讲 ​

业务系统 / MES 现场交付可以说:

联调和上线后更关注服务是否稳定、接口是否超时、采集链路是否中断。问题一般从日志和资源占用入手,先恢复再复盘。

有大盘/告警经验再补工具名;没有就别硬编完整 ELK 体系。


常见坑 ​

  • 只看 CPU,不看错误率和依赖耗时
  • 日志巨多但没有 requestId,无法串一次请求
  • 告警太多没人理 = 等于没告警

自测清单 ​

  • [ ] 能按顺序说:范围 → 存活 → 黄金信号 → 日志 → 下钻
  • [ ] 能举一个自己排查过的慢接口/发版问题
  • [ ] 知道日志里不该打什么
  • [ ] 能说出 3~5 个你认为必须盯的指标