极客视点
极客时间编辑部
极客时间编辑部
113245 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/05:01
登录|注册

系统出现故障怎么办?

讲述:丁婵大小:6.88M时长:05:01
你好,欢迎收听极客视点。
对于程序员来说,最不愿意看到的就是线上运行的系统出现了技术性故障,但这种情况几乎在每个程序员的职业生涯中都能遇到。处理这类故障特别考验一个人的综合能力,因为它不仅涉及到排查问题所需的技术能力,还会涉及到抗压能力、对外的沟通能力等等。
近日,公众号“跨界架构师(ID:Zachary_ZF)”的作者张帆发表文章,分享了处理故障的五个步骤。以下是重点内容。
处理故障主要包括保留现场、恢复、定位、解决、复盘五个步骤。

1. 保留现场

保留现场最重要的一件事,是保存异常程序的 Dump 文件。有了它,你就可以摆脱盲人摸象式地分析问题,快速定位问题的发源地。
此外,如果系统的监控体系并不完备的话,你还需要将问题发生时,操作系统、各第三方组件自带的监控数据快速地通过截图保存下来。保存监控数据的时候,要特别留意一下网络相关的数据。如果发现网络相关的数据有异常,那么再把当下的网络连接情况通过命令保存下来。因为相对来说,网络出现问题的概率远远大于硬件,规模越大的系统,越是如此。

2. 恢复

恢复系统访问有很多方法。很多程序员最常用的方法就是重启,这个方法几乎适用于 80% 的情况。而重启又分为自然重启和强制重启,在遇到故障时,应优先考虑自然重启,这样能避免产生一些意料之外的脏数据。但如果是系统出现资源耗用异常的话,就不要傻傻地等自然重启了,只能强制重启。
第二种常见的恢复方法是回滚。使用回滚的前提条件是,故障与最近一次发布有关。反正,盲目的回滚不但起不到作用,还会越弄越乱,特别是在分布式系统中。因为在分布式系统中,一旦上下游耦合的地方出现对接不上的情况,轻则报错,重则出现大量的异常数据。
第三种常见的恢复方法是降级,暂停出问题的模块,停止服务。当然,这个动作需要和业务方做好沟通,避免出现单独降级某个模块导致业务不完整之类的问题。
第四种常见的恢复方法是限流或者扩容。如果你发现是系统扛不住突增的流量,而导致发生故障的话,可以快速扩容几台机器和程序。无法扩容的话,可以选择限流,将一定百分比的请求直接拒绝服务。毕竟所有请求无法提供服务和部分请求无法提供服务相比,肯定还是后者划算。
除了以上四种方法,还有一些比较小众的方法是切到备机、故障隔离等,这里就不展开了,因为它们对环境、条件的要求更多一些。

3. 定位

关于定位问题,如果有 Dump 文件的话最方便了,通过 Dump 文件分析工具来分析,就可以快速定位到出问题的代码行,特别是程序阻塞、内存溢出、CPU 100% 之类明显是程序本身的问题。
不同的语言有不同的 Dump 分析工具,它们的最终目的就是定位到异常点的堆栈信息,有了它就相当于直接把问题代码出现在哪里都给定位到了。
此外,还可以通过监控数据、日志层层分析来定位问题。当你在看日志、监控数据的时候,一定要有关联起来看的意识,而不能仅仅在单个维度上看。因为有时候你在单个维度上看到的数据像是正常的,但是你关联起来看就不一定了。比如,TCP 连接数降低了一半,但是内存反而涨了 100%,为什么?这里面可能就藏着故障的线索。

4. 解决

定位到了问题,解决起来就很简单了,该改代码的改代码,该改配置的改配置文件。不过情况太多,大家遇到的可能都不太一样,这点就不展开聊了。

5. 复盘

你一定知道复盘的种种好处,但在实际操作中,却很少真正地自己进行复盘。如果你不知道从何下手来做复盘的话,不妨从以下几个问题入手:
这次故障原因是什么?
在当时是否有更快的方式来恢复业务?
如何避免再出现类似故障?
当前系统中是否还有类似的潜在风险?
如果你能回答这些问题,那么这个复盘就很到位了,剩下的就是执行。当然了,不管如何优秀地处理故障,最理想的情况还是不要发生故障。
以上就是今天的内容,希望对你有所帮助。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • InfoQ_e3b2957cd337
    学习了
收起评论
大纲
固定大纲
1. 保留现场
2. 恢复
3. 定位
4. 解决
5. 复盘
显示
设置
留言
1
收藏
35
沉浸
阅读
分享
手机端
快捷键
回顶部