读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(超文本标记语言) ...
随机推荐
- SDL_BlitSurface
SDL_BlitSurface Use this function to perform a fast surface copy to a destination surface. Contents ...
- A1090. Highest Price in Supply Chain
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- 【模板】第 K 大数
题目:给定一个序列,求其第 K 大的数是多少. 时间复杂度\(O(n)\) 代码如下: #include <bits/stdc++.h> using namespace std; cons ...
- (转)使用 Spring缓存抽象 支持 EhCache 和 Redis 混合部署
背景:最近项目组在开发本地缓存,其中用到了redis和ehcache,但是在使用注解过程中发现两者会出现冲突,这里给出解决两者冲突的具体方案. spring-ehcache.xml配置: <?x ...
- Asp: 解决脚本输出网页出现乱码情况
很久没碰asp,都有点生疏了,唉... 今天写一个小程序,发现网页静态部分输出不会乱码,asp脚本部分输出在360浏览器上会显示乱码,但在firefox和chrome上测试却不会显示乱码,我已经在代码 ...
- javascript:location.reload()和location.replace()的区别,及对图片缓存的影响。
有段时间没有清理IE的临时文件(缓存文件),在我清理的时候,我突然发现一个问题. 我打开的一个网站,图片默认缓存一个月的,但我发现,当我上传图片或删除图片之后,图片重新缓存,也就意味着,在我上传新图片 ...
- poj1185炮兵阵地 正确代码及错误代码分析
Solution:状态压缩 因为设置炮兵的局限性(同行两炮兵相差要大于2),一行10个数最多有60种可能性(程序计算) 其中判断可能性的好方法是: if ((i & (i << 1 ...
- Eclipse导入jdk的源码
eclipse导入JDK源码 前言:这件事情的重要性不言而喻,对于学习和观摩优秀的代码非常的有用,我喜欢想看什么代码都能 Ctrl+鼠标一点 就能够看到,不过这个不常操作,在这里小记一笔,以备后用.( ...
- mysql 日志清理
1.查看binlog日志 show binary logs; 2.删除某个日志文件之前的所有日志文件purge binary logs to 'bin.000106'; 3.再看show binary ...
- operator的itemgetter和attrgetter
前几天在给个list做排序的时候,隐隐约约想起来有个语法糖可以替代lambda函数,用来获取list中dict的key,作为排序的key. 这个语法糖平时用得少,怎么都想不起来.今天查看python标 ...