线上问题排查回答(转载)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

线上问题排查回答(转载)

原文链接:https://www.cnblogs.com/mzBlogs/p/17359351.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:线上问题排查回答(转载) - Python技术站

(0)
上一篇 2023年4月27日
下一篇 2023年4月27日

相关文章

  • java的Hibernate框架报错“CallbackException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“CacheException”错误。这个错误通常是由于以下原因之一引起的: 缓存配置错误:如果您的缓存配置错误,则可能会出现此错误。在这种情况下,需要检查您的缓存配置以解决此问题。 缓存操作失败:如果您的缓存操作失败,则可能会出现此错误。在这种情况下,需要检查您的缓存操作以解决此问题。 以下是两个实例说明…

    Java 2023年5月4日
    00
  • 如何使用Spring Security手动验证用户的方法示例

    下面我为你讲解如何使用Spring Security手动验证用户的方法示例,并提供两个示例。 如何使用Spring Security手动验证用户的方法示例 概述 Spring Security是一个基于Spring框架的安全性解决方案,它提供了许多实用的功能,可以用于开发安全的web应用程序。其中之一就是手动验证用户的方法。 在Spring Security…

    Java 2023年5月20日
    00
  • 详解SpringBoot之集成Spring AOP

    下面是详解SpringBoot之集成SpringAOP的完整攻略: 什么是Spring AOP Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要模块。它实现了基于代理的AOP,并且与IOC容器无缝集成,提供了便捷的配置方式。 面向切面编程就是将通用的横切关注点(如日志、安全、事务等)从…

    Java 2023年5月15日
    00
  • 在CentOS系统中检测Java安装及运行jar应用的方法

    在CentOS系统中检测Java安装及运行jar应用的方法: 1. 检测Java是否安装 可以通过以下命令检查Java是否安装在系统中: java -version 如果Java已经安装在系统中,会输出类似以下内容的信息: java version "1.8.0_191" Java(TM) SE Runtime Environment (…

    Java 2023年5月23日
    00
  • java中的GC收集器详情

    下面是“Java中的GC收集器详情”的完整攻略: 背景 在使用Java编写应用程序时,内存管理是一个非常重要的问题。如果不合理地管理好内存,可能会导致诸如内存泄漏、内存溢出等问题。Java为程序员提供了一种方便的内存管理方案——垃圾收集器(GC)。在绝大部分情况下,我们不需要手动去释放内存,GC会自动帮助我们管理内存。Java中的垃圾收集器有很多种,各种收集…

    Java 2023年5月20日
    00
  • Java Properties作为集合三个方法详解

    当我们使用Java进行编程时,经常需要使用配置文件来存储一些关键的配置信息,于是Java提供了一个名为Properties的类来处理这个问题。Properties是一个Map集合,其中的key和value都必须是字符串类型。下面将详细讲解Java Properties作为集合的三个常用方法:getProperty、setProperty和load。 getP…

    Java 2023年6月15日
    00
  • Java 安全模型,你了解了吗

    Java 安全模型,你了解了吗? Java是一种广泛用于应用程序和互联网的编程语言,其安全模型可确保Java代码执行时的安全性和完整性,从而使Java成为一种极具安全性的编程语言。下面来介绍Java安全模型的完整攻略。 Java安全模型基础 Java安全模型是由Java运行环境提供的一种安全机制,它通过控制Java程序访问资源的方式来保护主机和网络中的资源。…

    Java 2023年5月24日
    00
  • Mybatis拦截器实现自定义需求

    下面我将详细讲解Mybatis拦截器实现自定义需求的攻略: 什么是Mybatis拦截器? Mybatis拦截器是一个在Mybatis执行核心代码,解析SQL语句和执行SQL语句的过程中可以自定义添加一些拦截和处理的类。它可以实现在执行一条SQL语句前后增加一些处理逻辑,比如动态改变SQL语句、增加数据缓存和日志记录等功能。 如何实现Mybatis拦截器? 在…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部