如何定位线上问题?

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 「你是怎么定位线上问题的?」这个面试题我在两年社招的时候遇到过,前几天面试也遇到了。我觉得我每一次都答得中规中矩,今天来梳理复盘下,下次又被问到的时候希望可以答得更好。

面试官:「你是怎么定位线上问题的?」

这个面试题我在两年社招的时候遇到过,前几天面试也遇到了。我觉得我每一次都答得中规中矩,今天来梳理复盘下,下次又被问到的时候希望可以答得更好。

下一次我应该会按照这个思路去答:

1、如果线上出现了问题,我们更多的是希望由监控告警发现我们出了线上问题,而不是等到业务侧反馈。所以,我们需要对核心接口做好监控告警的功能。

2、如果是业务代码层面的监控报警,那我们应该是可以很快地定位出是哪儿的问题,毕竟告警逻辑都是我们写的嘛。如果是服务器资源/所依赖的中间件告警,那我们可能就要花点时间去排查啦。


3、不管怎么样,无论是系统告警还是是业务侧反馈系统或者接口出了问题。我们要想想在近期有没有发布过系统,如果近期发布过系统,判断能不能立马回滚到上一个版本,恢复系统平稳正常运行(在线上环境下,可用性是相当重要的)。回滚的时候要考虑接口有无依赖性,是否需要跟业务侧同步此次的回滚以及做相关的配合。

4、因为线上大多数的问题都来源于系统的变更,可能我们只是变更了很少的代码,但只要有一丝的逻辑没留意到,就真的很可能会导致出现问题,回滚很可能是最快能恢复线上正常运行的办法。

5、如果近期都没发布过系统,是系统告的警,那追踪下告警和报错日志,应该是可以很快地就能定位出问题。

6、如果不是系统告的警,是业务侧反馈出了问题,那这时候需要业务侧明确是哪个具体的功能/接口出了问题,有没有保留请求入参,有没有返回错误的信息,有何现象

7、知道了问题的现象之后,就需要根据经验排查可能是哪块出了问题了。我的经验一般是:先查存储侧有没有瓶颈(MySQL 的CPU有没有飙高,主从同步延迟是否很大,有没有慢SQL。Redis是不是内存满了,走了淘汰策略。搜索引擎有没有慢Query),把该服务所依赖的中间件的指标看一遍,这个过程中也要去看看服务接口的QPS/RT相关的监控。如果有某项指标不对劲,那顺着写入逻辑也应该很快能看出来

8、一般到这里,大多数的问题都能查出来。可能是逻辑本身的问题,可能是请求入参导致慢查询,可能是中间件的网络抖动,可能是突发或者异常请求的问题。

9、如果都不是,回归到应用和机器本身的监控:应用GC的表现、机器本身的网络/磁盘/内存/CPU 各种的指标有没有发现异常的情况。这里可能是需要运维侧一起配合看看有没有做过改动。

10、要是还定位不出来,看能不能复现,能复现都好说,肯定是能解决的。

11、要是不能复现,只能在怀疑的地方打上详细的日志再好好观察(问题定位不出来,很多时候就是日志不够详细,而日志在正常情况下也不应该打太多)


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
监控 搜索推荐 数据挖掘
精准定位目标客户群
精准定位目标客户群
202 2
|
1月前
|
SQL 前端开发 Linux
如何定位前后端的BUG
如何定位前后端的BUG
40 2
|
6月前
|
搜索推荐
精准定位目标客户群并进行行为分析
精准定位目标客户群并进行行为分析
189 5
|
6月前
|
监控 安全 5G
UWB人员精准定位系统源码,实现实时定位、人机料配对、物料标签配置、智慧调度、轨迹追踪
人员定位管理系统通过在厂区、车间部署UWB定位基站,实时采集人员、机具、物料上定位标签回传的位置信息数据,采用多维定位模式,精确定位人、机具、物料的实时位置,实现实时定位、人机料配对、物料标签配置、智慧调度、轨迹追踪、工时统计、区域物料统计、电子围栏等应用功能。
121 1
|
6月前
|
测试技术
线上环境漏测问题根因分析
线上环境漏测问题根因分析
|
数据处理
如何快速定位现网 BUG
如何快速定位现网 BUG
93 0
|
前端开发 Java Shell
快速定位线上CPU100%原因
快速定位线上CPU100%原因
351 0
快速定位线上CPU100%原因
|
前端开发 JavaScript 程序员
如何追踪线上错误
如何追踪线上错误
175 0
如何追踪线上错误
|
运维 监控 数据可视化
不改一行代码定位线上性能问题
性能问题。 大致的现象是: 我们提供出去的一个 OpenAPI 反应时快时慢,快的时候几十毫秒,慢的时候几秒钟才响应。
|
Arthas 弹性计算 监控
走完线上 BUG 定位最后一公里
因为线上线下环境隔离的问题,线上的输入很多时候难以在日常环境中构造,定位 bug 效率低下。是否有简单快捷的办法呢?
3821 5
走完线上 BUG 定位最后一公里