前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我是怎么定位线上问题的?

我是怎么定位线上问题的?

作者头像
Java3y
发布于 2023-01-05 12:45:54
发布于 2023-01-05 12:45:54
6860
举报
文章被收录于专栏:Java3yJava3y

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

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

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

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

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

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

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

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

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

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

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

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

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

这个我估摸想要考察的是看看你平时是怎么去定位问题的,定位问题的思路是什么,自己有没有方法论之类的。话虽如此,这也只是我这几年的定位问题的模式,也未必对,也不知道有没有缺少了哪一个重要的环节。面小公司总体下来会问些方法论的多,不会很专研某项技术的问题。

我瞅瞅还有啥可以拉出来复盘下,继续写呗。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java3y 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL之——源码编译MySQL8.x+升级gcc+升级cmake(亲测完整版)
最近,在CentOS 6.8服务器上编译安装MySQL 8.0.18的源码,百度了许久,发现网上的安装方式没一个可用的。基本都是基于CentOS 7.x来安装MySQL8.0,并且安装过程中会出现各种问题,按照他们的文章进行安装根本解决不了问题。更重要的一点就是,很多文章的内容一模一样!!我就纳闷了,那些发表文章的人,自己真的安装并且验证过吗?还是只是一味的抄袭呢?!
冰河
2020/10/29
2.3K0
MySQL之——源码编译MySQL8.x+升级gcc+升级cmake(亲测完整版)
CentOS 7.2编译安装MariaDB-10.0.xx
------------------------------------------分割线------------------------------------------
星哥玩云
2022/08/13
5080
[MySQL] MySQL的自己主动化安装部署
有过MySQL运维的人应该都清楚,线上的MySQL一般都採用源代码编译,由于这样才干够依据企业的各自须要选择要编译的功能,尽管MySQL的源代码编译挺简单的,可是试想一下,假设你有几百台server同一时候要安装MySQL,难道你还一台台去手动编译、编写配置文件吗?这显然太低效了,本文讨论MySQL的自己主动化安装部署。
全栈程序员站长
2022/07/12
5190
MySQL入门01-MySQL源码安装
也可以官网 https://cmake.org/ 下载源码编译。 我这里选择了官网下载最新版本cmake-3.5.2.tar.gz。
Alfred Zhao
2022/05/06
7260
mysql 8本地源码安装注意事项
yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel
算法之名
2019/08/20
7160
CentOS 7.6 下MySQL 8.0.16编译安装
yum -y install ntpdate gcc gcc-c++ ncurses ncurses-devel cmake readline-devel zlib.x86_64 zlib-devel.x86_64 bison libcurl-* net-tool* tree nmap sysstat lrzsz dos2unix telnet.x86_64 nethogs iftop iotop unzip ftp.x86_
星哥玩云
2022/08/18
8430
基于Centos6.5源码编译安装mysql-5.7.17
基于Centos6.5源码编译安装mysql-5.7.17过程详解 由于工作需要,需要在centos6.5服务器上安装mysql5.7,如下是详细安装过程。
冬天里的懒猫
2020/08/04
8620
CentOS 7上编译安装MySQL 5.5
MySQL服务是一个真正的多线程、多用户的SQL数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。为了确保MySQL数据库功能的完整性。可定制性,将采用源代码编译的方式安装MySQL数据库系统。
星哥玩云
2022/08/17
7660
在Linux下源码编译安装GreatSQL/MySQL
本次介绍如何利用Docker来将GreatSQL源码编译成二进制文件,以及制作二进制包、RPM包等。
老叶茶馆
2021/08/26
2.5K0
CentOS系统编译安装MariaDB数据库实现多实例
上一篇实现了yum安装多实例 现在开始用编译安装实现多实例 编译安装多实例 第一步:创建账户 [root@centos7 ~]#useradd -r -s /sbin/nologin mysql [root@centos7 ~]#id mysql uid=988(mysql) gid=983(mysql) groups=983(mysql) [root@centos7 ~]#getent passwd mysql mysql:x:988:983::/home/my
咻一咻
2020/05/29
6040
MYSQL5.6&5.7编译安装
此文只是帮助刚开始接触MYSQL的同学安装。可能会因为操作系统环境不一样,缺一些包,根据报错修复即可。装好后可以打包成RPM包,方便后续安装。 CMake编译工具 下载地址:https://cmake.org/download/ [root@shell ~]# wget -c https://cmake.org/files/v3.9/cmake-3.9.1.tar.gz [root@shell ~]# tar -zxf cmake-3.2.1.tar.gz && cd cmake-3.9.1 [root@s
MySQL轻松学
2018/03/09
1.1K0
CentOS Linux 7.5 编译安装 MySQL 8.0.12 及修改密码问题
#cat /etc/RedHat-release CentOS Linux release 7.5.1804 (Core)
星哥玩云
2022/08/17
5790
【MySQL数据库疑难杂症】常用的两种升级方法
动态修改innodb_fast_shutdown=0,以执行full purge(当innodb_fast_shutdown=0时,MySQL在执行关闭mysqld进程时,会对不再需要的undo log page进行清理,该清理动作非人为触发)和插入缓冲合并等操作,以干净的方式关闭MySQL。
samRsa
2025/02/11
2000
【MySQL数据库疑难杂症】常用的两种升级方法
linux环境编译安装Mysql8.0
本文以BClinux for euler 21.10(redhat/centos可以参考)为例。在本地内网(Linux主机无法连接互联网,能连接公网最好,不能也没关系)编译安装。
炒香菇的书呆子
2024/07/23
8190
MYSQL8+CENTOS7.6 主从+keepalived搭建总结
yum -y install ncurses-devel openssl openssl-devel bison
PHP开发工程师
2021/05/24
8020
编译安装mysql 5.6.40
环境说明 系统版本 CentOS 7.2 x86_64 软件版本 mysql-5.6.40 编译步骤如下: [root@db01 ~]# mkdir -p /service/tools [root@db01 ~]# mkdir /application [root@db01 ~]# yum install ncurses-devel libaio-devel cmake gcc gcc-c++ glibc openssl-devel bison-devel -y [root@db01 ~]# us
仙人技术
2020/04/29
1.1K0
部署MySQL 5.7
注:在安装MySQL前需要卸载掉当前已有的mariadb,然后需要安装gcc环境 1、安装cmake
小手冰凉
2020/04/12
8220
Linux 中 Discuz 部署
冷影玺
2023/10/11
5260
Linux 中 Discuz 部署
CentOS下源码编译安装LNMP(附源码包)
LNMP指的是一个基于CentOS/Debian编写的Nginx、PHP、MySQL、phpMyAdmin、eAccelerator一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、Ubuntu、Fedora、gentoo等;Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器;Mysql是一个小型关系型数据库管理系统;PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
星哥玩云
2022/07/14
1.7K0
CentOS下源码编译安装LNMP(附源码包)
Centos 7安装mysql-5.7.22
wget https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
py3study
2018/08/03
1K0
相关推荐
MySQL之——源码编译MySQL8.x+升级gcc+升级cmake(亲测完整版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档