读SRE Google运维解密有感(四)-聊聊问题排查
前言
这是读“SRE Google运维解密”有感第四篇,之前的文章可访问www.addops.cn来查看。
今天我们来聊聊“问题排查”这个话题,本人到目前为止还在参与一线运维的工作,遇到过很多“稀奇古怪”的线上故障和问题,结合SRE中给出的一些方法,来说说“问题排查”那点事。
排查问题不是玄学
排查出线上问题,并找到根本原因加以解决,是一件很有成就感的事情,曾经有人问过我,“你是怎么想到问题出现在xxx的?又是怎么确认根本原因是xxx的?”,我只能淡淡的说:“靠经验”,然后感觉这个逼装的自己还算满意。
其实这个“靠经验”说的很模糊,一直以来,大家都觉得排查问题要靠经验,但是又说不出具体通过啥经验排查出了问题,最后让排查问题逐渐变成了一门玄学。
排查问题犹如破案
排查线上问题,就和侦探破案一样,就是一个不停分析线索,推理的过程,在你准备破案之前,先要明确以下两点。
系统异常是正常的,正常是特例
时至今日,计算机系统已经变得异常复杂,一次用户请求可能要经过发送请求,DNS解析,运营商网络和IP转换,负载均衡,服务器硬件,虚拟机/容器,视业务逻辑的复杂程度,可能还要调用其它组件,存储,数据库,缓存等。每个环节都可能出现问题,有的组件又是分布式的,大大增加的排查问题的难度,所以出现问题后,不要着急,保持好心态,要认为“系统异常是正常的,正常是特例”。
飞行员首要任务是保持飞机飞行
在初级飞行员的课程中捡到,在紧急情况中,飞行员的首要任务是保持飞机飞行,相比保证乘客与飞机安全着陆,故障定位和排除是次要目标。--SRE
所以,恢复线上系统是首要任务,而不是找到它发生的原因。
明确案情
先评估出这个问题的影响范围,是全网用户不可用,还是某些用户,是某条业务线出现问题,还是很多业务线都出现问题,评估出案情的大小,是普通的民事案件,还是刑事案件。
真相只有一个
计算机是一门科学,而且计算机是由0|1组成的世界,在这个世界里只有“是或否”,没有中间地带,所以在计算机世界“凡事都有根本原因”,“没有偶然发生,一切都是必然”。
所以,你要坚信真相只有一个。
理清线索
理清目前得到的线索和信息,比如监控上有网络报警,有用户反馈无法访问,有开发人员反馈服务器有问题,不要漏掉看似无关紧要的线索,把这些线索先整理下来,后面一并分析。
扩大信息量
尽可能扩大你接受到的信息量,比如问询一下开发人员今天有没有做线上改动,网络组有无重大调整。获取到有价值的信息,对于排查问题至关重要。
查看监控,细看某个监控项的变化,追踪日志和调试信息都是扩大信息量的手段。
分析证词
分析用户反馈的现象,数据是可信的,有时候人说的是不可信的,举个例子,之前有开发反馈我们虚拟机有问题,有些虚拟机接口返回异常,有些正常,他就让我们帮查查虚拟机的问题,但是最后是代码调用一处动态配置造成的。
很多反馈的信息描述,是经过描述者过滤加工过的信息,他的排查和分析有可能把你“带歪了”,先要用怀疑的态度,分析每个人的证词。
当你听到蹄子声响时,应该先想到马,而不是斑马
排查问题不要先入为主,有时候你觉得极其简单,看似非常不可能发生的事情,可能就是原因,不要轻易的排除掉某项原因,比如“宇宙射线导致某个电路信号出错”。
我们之前有个mysql连接异常的问题,查了很久,做了很多调优都没有解决,最后发现是网卡跑满了。
从大到小,从上到下
排查步骤,先“从大到小”,先看比如运营商网络,机房状态等比较宏观的地方是否有问题,逐一排除,逐步缩小问题范围。“从上到下”,先从现象发生的顶端调用链逐一排查,逐步向下深入。
SRE给出的一些方法
SRE给出了一些方法可以借鉴:
- 问题排查的几个步骤:定位,检查,诊断,测试/修复,治愈。
- 什么,哪里和为什么,找出系统正在执行“什么”,询问系统“为什么”执行这些操作,以及系统的资源都被用在了“哪里”可以帮助你了解系统为什么出错。
- 确定“最后一个修改”发生的时间。
- 提供丰富的诊断和监控工具。
下次遇到问题,使用以上方法试试看,让问题排查不再是“很玄妙的东西”。
本文链接:https://addops.cn/post/sre-read-think-4.html
读SRE Google运维解密有感(四)-聊聊问题排查的更多相关文章
- 读SRE Google运维解密有感(二)
前言 这是读“SRE Google运维解密”有感第二篇,第一篇参见 这本书最近又读了几章,结合自己的经历,有些地方真的能感同身受,有些地方也惊叹SRE充满辩证的思想,总之SRE是好一本好书,会给你很大 ...
- 读SRE Google运维解密有感(三)
前言 这是读“SRE Google运维解密”有感第三篇,之前的文章可访问www.addops.cn来查看.我们今天来聊聊“on call”也就是运维值班制度, 本人到目前为止也还在参与一线运维的值班, ...
- 读SRE Google运维解密有感(一)
前言 这几天打算利用碎片时间读了一下"SRE Google运维解密"这本书,目前读了前几章,感觉收获颇多,结合自己的工作经历和书中的要点,写一些感悟和思考 SRE 有关SRE我就不 ...
- google运维解密
1.运维团队与开发团队的矛盾: 运维追求业务的稳定.开发更关注新功能的添加与版本的快速迭代.但是由于业务更新,有很大可能导致故障.从本质上来说,两部门是矛盾的. deops应该是: 1.对重复性工作有 ...
- SRE_ Google运维解密
# 第IV部分 管理 #系统可用性时间表 # 专用术语 SLO:服务等级目标 LCE(Land-Covered Earth):紧急检修登陆艇 # 紧急事故管理 一次流程管理良好的事故 # 东西早晚要坏 ...
- 【运维监控】四款云服务监控工具介绍:Nagios 、 ganglia、zabbix、onealert
在我们日常的工作中,有时候需要监控和管理平台的运行状况,而服务运行是否存在异常,是否有软硬件bug等,均需要第一时间知道.对服务状态了如指掌,是一个很重要的事情.那么这个如何做到呢,我们之前在进行私有 ...
- Oracle运维服务的四根救命稻草
企业信息化系统建设按生命周期可分为IT规划阶段.IT建设阶段和IT运维阶段,其中,IT运维阶段的时间最长,IT运维管理关乎着IT运维的质量.成本和速度,更关乎着IT系统的安全.连续和可用.大数据云计算 ...
- java运维: 一次线上问题排查所引发的思考
本文转载自 crossoverJie 的b博客 https://www.cnblogs.com/crossoverJie/p/9282065.html 前言 之前或多或少分享过一些内存模型.对象创建之 ...
- python运维开发(十四)----HTML基本操作
内容目录: HTML概述 head标签 body中常用标签 css选择器 css常用属性 HTML HTML概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言) ...
随机推荐
- CF 989
今天晚上闲来无事打了一场CF......div.2,第600名.太弱了. T1看懂题之后发现是水题(废话),6min AC. T2仔细思考之后发现可做,但是由于n=p的特判没确定到底有没有解,WA了一 ...
- Flash:使用FileReference上传在Firefox上遇到的问题终于解决了
以前使用的是这样的一句话:var uploadURL:URLRequest = new URLRequest();uploadURL.url = "upload.asp"; 测试发 ...
- 搭建一个简单的node.js服务器
第一步:安装node.js.可以去官网:https://nodejs.org/en/进行下载. 查看是否成功,只需在控制台输入 node -v.出现版本号的话,就证明成功了. 第二步:编写node.j ...
- javascript高级程序设计第二章知识点提炼
这是我整理的javascript高级程序设计第二章的脑图,内容也是非常浅显与简单.希望您看了我的博客能够给我一些意见或者建议.
- idea中gitlab新创建分支查找不到的原因
问题: 很多人说是这样解决: https://blog.csdn.net/rodulf/article/details/51536532 然后对于我来说没用............ 这里先说下如何从m ...
- 题解【bzoj4650 [NOI2016]优秀的拆分】
Description 求对每一个连续字串将它切割成形如 AABB 的形式的方案数之和 Solution 显然 AABB 是由两个 AA 串拼起来的 考虑维护两个数组 a[i] 和 b[i] ,其中 ...
- 牛客多校第三场 A- PACM Team 背包/记忆路径
https://www.nowcoder.com/acm/contest/141#question 一眼背包,用四维dp记录在A,B,C,D条件限制下可以获得的最大知识点,但是题目要求输出路径,在输入 ...
- Keepalive+nginx实现高可用负载均衡方案
Keepalive+nginx实现高可用负载均衡方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.nginx做高可用工作在第几层? 上个月我发表了一篇keepalive+lv ...
- cas单点登陆。就这一篇就够了!!!!!
前言: cas是什么我就不累赘说了.就简单说下大致的流程.首先,cas是一个独立的项目.就是一个war包,部署在tomcat上面启动就ok.然后我们要实现单点登陆,无疑是访问系统1,如果没有登录,就跳 ...
- HDU - 5413 CRB and Roads
CRB and Roads Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...