很早以前,程序员只需要写好自己那部分代码,并确保熟悉代码逻辑,以及代码中关联的部分外部系统如数据库就行了。

到了近几年,随着分布式系统如雨后春笋层出不穷,一个应用系统的依赖可谓相当多。比如一个典型的风控系统,背后可能会依赖kafka, hbase, hive, zookeeper, elasticsearch,mysql, flink等等。这些系统往往无法如设计之初所想的那样健壮,从概率的角度来讲,即便某个系统的故障率是0.5%,10个系统在一起其可用性也会降到95%。而保障每一个系统可用也成为了应用对外的SLA。

这里对系统排障做一些经验总结,提供大方向和思路,在排障过程中能起到灯塔的作用。即所谓的道,它并不会对实际排查问题起到帮助,但是能够提供不同的思路碰撞,在陷入死胡同时往往会有效果。

宏观vs微观

排障过程中,既要在宏观层面思考全局,又要跳到微观层面思考细节,有时需要在两种思路中反复跳跃。

举个例子,某个docker上部署了你的应用A,当你发现A疑似gc频繁可能内存不足时,你是在深度微观寻找该应用可能的问题;若你解决了内存问题,发现cpu

又比如,ES系统中某索引出现写入一条数据需要30s的情况,这时候是不是就一定可以认为该索引有问题,只需要去检查该索引就行了,如果这么考虑,实际上就是仅站在孤立微观的角度去看问题,实际上,可能是另一条错误使用的索引影响了该索引而已,这就是从孤立微观的现象抽象到整体统一的宏观角度。

时间vs空间

排障过程中,既要思考时间层面变化带来的影响,又要思考空间层面变化带来的影响。

所谓时间层面,即需要考虑故障开始的时间点,在时间线维度进行环比同比这样的时间层面上进行多维度的分析和比较。

比如,某天调用量大幅下降,故障与上一小时相比有什么变化(环比),与头一天同时段有什么变化(同比)。

然后,从有问题的时间去检查那个时刻是否有发布,是否有动态配置变更,是否有系统配置变更,是否有系统变更,是否有依赖系统变更,是否有硬件层面的变更,这些往往是重要的因素,在我过去的经验中,故障的开始往往伴随着变更。

所谓空间层面,即考虑故障的产生的范围,是在上游,下游还是本系统;如果是本系统,那么可能在本系统的A模块,B模块还是C模块;如果是本系统,是局部问题还是整体问题(某些节点故障还是所有节点故障)。即从大致范围划分来迅速寻找或圈定故障点,从而帮助我们更方便的查找原因。

比如,某flink系统,其上游是kafka,再上游是一个spark系统计算,其下游是另一个kafka,某天下游消费方突然发现没有数据了,此时应当如何从空间和范围界定的角度迅速缩小故障点?

又或者,某天某索引写入较慢,如何判断是整个索引故障,还是某台机器磁盘坏了?

白盒vs黑盒

排障过程中,既要考虑黑盒排障的方式,又要考虑白盒的方式。

白盒排障及熟悉系统架构,模块,代码,通过现象推断问题大致在哪,原因是什么?靠的是对内部细节的熟悉和深入理解。

黑盒排障则是从另一个维度,即将系统当做一个黑盒子,从各类外部现象如CPU,内存,磁盘,网络等推断故障原因。

以上仅仅是对排障的一些"道"的总结,主要目的是产生思维的碰撞,在茫茫大海中产生排障的思路,而真正的排障就需要有"术"和"器"的指导。

如何排查系统故障-道相关推荐

  1. 调试九法:软硬件错误的排查之道书评

    调试九法:软硬件错误的排查之道<书评> 前几天从Top 100 Best Software Engineering Books, Ever听说这本书,唯一一本关于调试的,想必上榜只有它的道 ...

  2. 调试九法 软硬件错误的排查之道

    本书非常系统地介绍了如何对一个软硬件系统进行调试(debug),运用大量的简单实例,理论上,如本书中所述,本书适合于任何人. 对于经常需要调试的我来说,无论是电路.代码.机械,还是三者的结合体,调试都 ...

  3. 如何高效排查系统故障?一分钱引发的系统设计“踩坑”案例

    阿里妹导读:阿里巴巴的电商业务十分复杂,一方面是市场多样化,业务多样化,另外是消费者,商家的影响面非常广,任何一个小故障都可能引发一些社会问题,所以阿里对产品的质量,对服务的连续性有严格的要求.阿里技 ...

  4. Linux操作文档——分析和排查系统故障(日志)

    文章目录 一.日志系统 1.概念 2.分类 二.分析日志文件 1.主要日志文件 2.日志文件分析 3.action(动作)日志记录的位置 三.日志的采集 1.一般日志采集 2.Nginx日志采集 3. ...

  5. Linux环境下分析和排查系统故障

    1.分析日志文件 日志文件是用于记录Linux系统中各种运行消息的文件,不同的日志文件记载了不同类型的信息,如Linux内核消息.用户登录时间.程序错误等: 日志文件对于诊断和解决系统中的问题有很大帮 ...

  6. Linux进程和任务管理和分析和排查系统故障

    ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易, ...

  7. 嵌入式系统 - Nand Flash 烧写问题排查

    问题背景 板卡:SOM-TL437x-A1 事件:生产了 410 PCS 需要测试.烧写系统,部分板卡烧写出货系统异常. 现象:其中 78 PCS 由于 BTB 问题未测试.332 PCS 功能测试后 ...

  8. 2017 阿里技术-年度精选

     个人感觉这本技术精选无论从排版.内容各方面都挺不错的,里面挺多新兴的的东西(对于我来说~)闲暇看看挺能开阔眼界,增长见识的: 注: 上册内容为数据库.中间件.运维.开源.技术人生等: 下册内容为算法 ...

  9. 信安Note_day29

    Linux进程和计划任务管理 程序和进程的关系 程序:保存在硬盘.光盘等介质中的可执行代码和数据,是静态保存的代码. 进程:在CPU及内存中运行的程序代码,是动态执行的代码. 父.子进程:每个进程可以 ...

最新文章

  1. 底板芯片组与内存映射(Motherboard Chipsets and the Memory Map) 【转】
  2. python3 字符串、十六进制字符串、数字、字节之间的转换
  3. 新手安装linux的磁盘划分
  4. Python语言学习之字母G开头函数使用集锦:global用法之详细攻略
  5. mdadm,用命令做RAID
  6. sqlyog怎么连接mysql错误2003_网站突然连不上,MySQL连接错误经常内存不够宕机
  7. img文件编辑_只会用chmod 777?Linux下的文件权限居然还有这么多骚操作
  8. 洛谷 P2010 回文日期
  9. ClickHouse安装部署
  10. 牛客网刷题——斩获offer
  11. 如何在面试中回答 “你最大的缺点是什么?”
  12. Airsim 无人机仿真
  13. oracle序列号查询最大值,Oracle sequence值到了最大值的处理
  14. 如何实现年会主分会场视频直播?
  15. 算法 + 算法 = 新算法
  16. 国培_阶段性学习总结
  17. Linux常用命令:chmod
  18. 总结关于thinkphp中where查询条件的设置
  19. 到底什么是瘦AP、胖AP、AP+AC、Mesh?
  20. XCTF re5-packed-movement

热门文章

  1. 微信小程序多选复选框checkbox。微信小程序官方文档bug
  2. 初识CCS,创建工程、选择芯片、简单调试及烧录
  3. 【Node.js】实现微信小程序订阅消息推送功能
  4. Charles抓包APP
  5. python基础知识总结集合
  6. vivado 数码管学习(二)数码管显示一位数字和显示八位数字
  7. Myth源码解析系列之四- 配置与启动详解
  8. 基于imx6的gt911触摸屏驱动移植
  9. CamstarPortal操作记录(新建用户,设置菜单,创建产品流程)
  10. windows安全警报怎么关闭_Windows10如何关闭自动更新