如何排查线上问题的?

news2024/11/16 20:37:27

其他系列文章导航

Java基础合集
数据结构与算法合集

设计模式合集

多线程合集

分布式合集

ES合集


文章目录

其他系列文章导航

文章目录

前言

一、预警层面

1.1 做好监控告警

1.2 定位报警层面 

二、近期版本

2.1 判断最近有没有发版本

2.2 回归最近的版本

三、日志告警

3.1 追踪日志

3.2 业务侧告警

四、排查经验

4.1 我的经验

4.2 定位到问题

4.3 走投无路,回归本质

4.4 上大招复现

4.5 日志版debug

五、总结


前言

在当今的互联网时代,线上问题对企业的业务连续性和用户体验产生的影响越来越大。无论是网站崩溃、应用性能下降,还是服务中断,这些问题都可能对企业的声誉和用户满意度造成严重影响。因此,快速、准确地排查并解决线上问题变得至关重要。

本文将介绍一些高效的线上问题排查方法,帮助您在面对线上问题时,迅速定位并解决问题。我们将在接下来的内容中详细讨论如何利用日志分析、监控系统、代码审查等手段,以及如何制定有效的应急预案。通过这些策略的实施,您将能够提高线上问题的解决速度,减少对业务的影响,并提高用户满意度。

请继续阅读,以了解更多关于如何排查线上问题的详细信息。

本文是链式风格,循序渐进!


一、预警层面

1.1 做好监控告警

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

如下图所示:

1.2 定位报警层面 

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


二、近期版本

2.1 判断最近有没有发版本

不管怎么样,无论是系统告警还是是业务侧反馈系统或者接口出了问题,我们要想想在近期有没有发布过系统,如果近期发布过系统,判断能不能立马回滚到上一个版本,恢复系统平稳正常运行(在线上环境下,可用性是相当重要的)。

回滚的时候要考虑接口有无依赖性,是否需要跟业务侧同步此次的回滚以及做相关的配合。

2.2 回归最近的版本

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

 


三、日志告警

3.1 追踪日志

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

3.2 业务侧告警

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


四、排查经验

4.1 我的经验

知道了问题的现象之后,就需要根据经验排查可能是哪块出了问题了。

我的经验一般是:先查存储侧有没有瓶颈(MySQL 的CPU有没有飙高,主从同步延迟是否很大,有没有慢SQL。Redis是不是内存满了,走了淘汰策略。搜索引擎有没有慢Query),把该服务所依赖的中间件的指标看一遍,这个过程中也要去看看服务接口的QPS/RT相关的监控。

一些相关代码如下: 

检查MySQL的CPU使用情况:

SHOW PROCESSLIST;

检查主从同步延迟:

SHOW SLAVE STATUS\G;

查找慢SQL:

SHOW FULL PROCESSLIST;

检查Redis内存使用情况:

redis-cli info memory;

如果有某项指标不对劲,那顺着写入逻辑也应该很快能看出来。

4.2 定位到问题

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

4.3 走投无路,回归本质

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

4.4 上大招复现

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

4.5 日志版debug

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

图片

这个我估摸想要考察的是看看你平时是怎么去定位问题的,定位问题的思路是什么,自己有没有方法论之类的。

话虽如此,这也只是我这几年的定位问题的模式,也未必对,也不知道有没有缺少了哪一个重要的环节。


五、总结

线上问题排查是运维人员的重要职责之一,它涉及到对系统性能、稳定性、安全性等方面的监控和排查。通过问题定位、分析、解决和预防等步骤的实践经验总结出一些有效的排查方法。同时需要不断学习和提升自己的技能水平以更好地应对各种线上问题。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1309726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国际语音通知系统有哪些功能?

支持动态呼叫及语音播报通知 支持根据企业需求自定义语音通知内容,并可实现批量外呼,同时支持中文、英语、日语等其他国家语言。系统还可以根据不同的通知需求设置不同的呼叫策略,如设置外呼的启动时间段、呼叫间隔频率、呼叫次数、以及接通…

计网 - 白话TCP 三次握手过程

文章目录 概述TCP协议头的格式TCP Finite State Machine (FSM) 状态机三次握手如何在 Linux 系统中查看 TCP 状态 概述 每一个抽象层建立在低一层提供的服务上,并且为高一层提供服务。 我们需要知道 TCP在网络OSI的七层模型中的第四层——Transport层 -----------…

同城线下社交搭子,同城圈子交友系统

简介:打破传统耗时耗力的交友模式,实现1对1,点对点的快速即时交友模式,线上线下 整合,可在线查看状态以及距离远近,可自行设置每单的收益提成以及代理的分佣提成。 结构: TINKPHP框架 公众号H5;系统开源,方便二次开发…

【PostgreSQL】从零开始:(三)PgAdmin4下载与安装

【PostgreSQL】从零开始:(三)PgAdmin4下载与安装 pgAdmin简介liunx下部署通过yum部署pgAdmin4(6.21)1.安装依赖包2.永久停止防火墙3.配置pgadmin4项目源4.下载并安装pgAdmin45.执行初始化命令6.访问我们的网站 liunx下通过python方…

TCP/IP详解——ARP 协议

文章目录 一、ARP 协议1. ARP 数据包格式2. ARP 工作过程3. ARP 缓存4. ARP 请求5. ARP 响应6. ARP 代理7. ARP 探测IP冲突8. ARP 协议抓包分析9. ARP 断网攻击10. 总结 一、ARP 协议 ARP(Address Resolution Protocol)协议工作在网络层和数据链路层之间…

RLC防孤岛负载测试的操作和维护

孤岛现象是指当电网因故障或停电而与主电网断开连接时,某些部分仍然保持供电的现象。这种情况下,如果电力系统的保护设备不能及时检测到孤岛并切断供电,可能会导致严重的安全事故。因此,进行RLC防孤岛负载测试对于确保电力系统的安…

【MySQL】安装和配置mysql

环境:Centos 7 删除不需要的环境 查看是否有正在运行的服务: ps ajx |grep mysqlps ajx |grep mariadb切换为root用户, 如果存在有服务 systemctl stop mariadb.service 或者 systemctl stop mysqld查看系统下的mysql安装包并删除&#xf…

linux文本处理sed

sed常用命令详解 sed (Stream EDitor) a append,对文本追加,在指定行后面添加一行/多行文本c 取代,替换d Delete,删除匹配行i insert,表示插入文本,在指定行前添加一行/多行文本p …

工业磷酸行业分析:中国市场产能及消费发展研究

工业磷酸主要用于电镀工业、医药工业、磷酸盐工业及冶金工业等。磷酸蒸汽对皮肤有较强的腐蚀作用,工作人员应注意保护呼吸器官和皮肤。预计工业级磷酸一铵将在一定时期内保持供应趋紧的市场格局,其市场价格有望保持相对高位运行。 业磷酸纯品为无色透…

蛋白质的上位性效应及突变影响的范式

直接性上位效应 在这张图片中 : 1)相互作用的氨基酸形成有利接触(H和T具有H键相互作用) 2)H和P的空间叠加,属于不利的上位姓效应 3)V和P具有更高的自由度,因此需要的能量更低&#…

fastapi-amis-admin快速创建一个后台管理系统增加音乐管理功能(3)

fastapi_amis_admin 是一个功能强大的框架,旨在帮助开发者在使用 FastAPI 进行 web 开发时,能够快速创建一个高效且易于管理的后台界面。通过结合 FastAPI 和 amis 的优势,fastapi_amis_admin 提供了一种简洁而高效的方式来构建和管理 web 应…

03进程基础-学习笔记

Process 进程 进程为操作系统的基本调度单位,占用系统资源(cpu,内存)完成特定任务,所有说进程是操作系统的标准执行单元 进程与程序的差别 程序是静态资源,存储与电脑磁盘中(disk磁盘资源)程序执行后会创建进程,负责完成功能&a…

软件测试(接口测试业务场景测试)

软件测试 手动测试 测试用例8大要素 编号用例名称(标题)模块优先级预制条件测试数据操作步骤预期结果 接口测试(模拟http请求) 接口用例设计 防止漏测方便分配工具,评估工作量和时间接口测试测试点 功能 单接口业…

计算机网络安全原理习题参考答案

1.9习题 一、单项选择题 1. ISO 7498-2从体系结构的角度描述了5种可选的安全服务,以下不属于这5种安全服务的是(  D  ) A. 数据完整性   B. 身份鉴别   C. 授权控制   D. 数据报过滤 2. ISO 7498-2描述了8种特定的安全机制&…

漏洞复现-iDocview某接口存在任意文件读取漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

QT 入门

目录 QT 概述 QT5安装 QT环境介绍 编写第一个QT的程序 QT项目文件介绍 QT 概述 QT简介 QT是一个跨平台的C图形用户界面应用程序框架。它为程序开发者提供图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正地组件编程。 QT的发…

JVM虚拟机:如何查看JVM的XX参数?

本文重点 在学习XX参数之前,我们先来学习一下,如何查看当前程序所配置的xx参数。 查询JVM的xx参数的命令 jps -l (查询正在运行的java进程) jinfo -flag 参数名 进程号 (查看该进程程序的参数的值) jinfo -flags 进程号 (查看该进程程序中所有参数的值) 举例 查看所有的…

华为交换机——配置策略路由(基于IP地址)示例

一、组网需求: 汇聚层Switch做三层转发设备,接入层设备LSW做用户网关,接入层LSW和汇聚层Switch之间路由可达。汇聚层Switch通过两条链路连接到两个核心路由器上,一条是高速链路,网关为10.1.20.1/24;另外一…

pytorch:to()、device()、cuda()将Tensor或模型移动到指定的设备上

将Tensor或模型移动到指定的设备上:tensor.to(‘cuda:0’) 最开始读取数据时的tensor变量copy一份到device所指定的GPU上去,之后的运算都在GPU上进行在做高维特征运算的时候,采用GPU无疑是比用CPU效率更高,如果两个数据中一个加了…

Vue3安装使用Mock.js--解决跨域

首先使用axios发送请求到模拟服务器上,再将mock.js模拟服务器数据返回给客户端。打包工具使用的是vite。 1.安装 npm i axios -S npm i mockjs --save-dev npm i vite-plugin-mock --save-dev 2.在vite.config.js文件中配置vite-plugin-mock等消息 import { viteMo…