线上bug不知所措?也许你需要这一份线上故障处理手册
摘要
通常处理线上问题的三板斧是重启-回滚-扩容,能够快速有效的解决问题,但是根据我多年的线上经验,这三个操作略微有些简单粗暴,解决问题的概率也非常随机,并不总是有效。这边总结下通常我处理应用中遇到的故障的解决方案。原则
处理故障的时候必须遵循的一些原则提早发现问题,避免故障扩散 故障的出现链路一般如下图所示 每一层都有可能出现问题,越底层出现问题,影响面越大。所以每一个层次都需要有相应的问题监控机制,这样越早发现问题,越能尽早解决故障,避免问题的扩散。比如服务依赖的一个数据库主库有问题了,如果等到用户报过来,这时候可能服务已经挂了几分钟了。再等你分析问题,解决问题,切换主备什么的,可能几分钟又过去了。影响访问比较大了。如果在数据库出问题时,就已经收到警报,迅速解决,可能没等用户报过来,问题解决了。迅速广播 当收到一个P0警报,判断应用出现问题了,第一时间在组内广播。全部人员进入一级战斗状态,发现可能和其他依赖的服务/中间件/运维/云厂商有关,立即通知相关责任人,要求进入协同作战。快速恢复 保留现场很重要,有助于发现root cause。但是发生故障了,必须要争分夺秒,不能为了保留现场浪费几分钟的时间去干什么dump内存,jstack线程状态的事。必须第一时间内先恢复服务,之后再根据当时监控数据,去找root cause持续观察 为了解决问题,可能需要在线上进行了重启/回滚/mock/限流等操作,一定要查看是否达到了预期效果。 需要持续观察一段时间,服务是否真的正常。 有时候可能只是短暂下去了,还会反扑。处理手段
处理手段无非是重启、扩容、回滚、限流、降级、hotfix
以下是我一般处理线上问题的流程
主要分为四大块
step1: 是否有变化
和造成大部分车祸的原因是由于变化导致一样,线上故障通常也是由于变化导致的。外部的变化很难感知到,但是服务自身的变化很容易感知,当有服务发布、配置变更等变化时。那么首先判断是否可回滚,可回滚的立马回滚。step2: 是否单机
现在一般是集群部署,服务高可用。如果只是一台机器有问题,在服务可摘除的情况下立即摘除。不可立即摘除的,先扩容再摘除。step3: 是否集群
整个服务集群都出问题了,问题就相对比较复杂一些了,需要分为单个API与多个API错误。单个API错误 是否对应用内其他API,模块、下游的存储有影响。有影响的话,可降级的及时降级。由于请求量增加引起的,限流。对其他模块无影响,再排查问题,hotfix。多个API错误 这种通常是step4出错了,可以直接到step4查看。 如果不是step4错误,如果流量超预期,限流扩容操作。如果不是,找代码问题,hotfix上线step4: 依赖的服务/存储有问题
立即找到相关团队,一起看问题。如果是自身服务不正常的请求引起的,再做相应的fix。如果是正常操作引起的,那需要紧急扩容,升级配置。如何预防
从上述操作可以看出,故障发生时需要做的判断还是很多的,如果经验不够丰富,处理不得当,很容易引发故障升级、资产损失。 所以需要提前预防。了解你的服务
像哲学家剖析自己一样去了解你的服务。一般包含以下内容绘制应用系统架构图
需要包含以下模块,服务给谁用 出了问题应该通知到谁包含哪些模块 应用了哪些功能模块。用户报问题过来的时候知道大体属于哪个服务出了问题系统流程 模块间如何流转的依赖的中间件 依赖了哪些中间件,对应负责人是谁依赖的存储、消息队列 依赖了哪些存储,存储运维负责人是谁依赖的服务 依赖了哪些服务,什么功能依赖了什么服务,出了问题,找谁。是否是弱依赖,可降级的。绘制应用系统部署图
系统是如何部署的,部署在什么环境。如何登陆、扩容、升配。梳理系统故障等级
哪些模块是核心的,哪些模块是没那么重要的,可以降级的。压测演练
当前系统能够支持的单机QPS是多少,可能存在的性能瓶颈是什么,需要通过压测来得出来。
当前应用的API读写比是多少,对应到各个存储层面的比例是多少。当应用QPS上升,哪个依赖最先挂掉。redis/mysql 还是依赖的服务,还是应用本身。定期盘点
无论是用户反馈故障,还是监控警报,基本都晚了,因为这时候已经累积了一定错误量的调用了。所以需要再抢先一步,定期盘点应用。衡量的指标一般围绕使用率、饱和度、吞吐量以及响应时间 盘点的内容包括所有的依赖。应用层面 磁盘cpu,内存,load数,jvm gc情况系统层面 qps依赖的存储 磁盘,cpu, IOPS, qps。消息队列 消费速度是否正常
另外系统日志是第一手的故障信息来源,应用owner需要定期对错误日志进行查询,能够有效的将潜在问题扼杀在摇篮里。监控警报
监控警报有助于提早发现故障,所以确保监控项完备,警报能够有效报出来。 以下是常用的一些监控项
知情人士阿里巴巴将权力下放给各业务部门华尔街日报引述知情人士透露,阿里巴巴首席执行官张勇正在将权力下放给公司各业务部门的主管,以便更灵活地应对日益增多的挑战,并可能为分拆开辟道路。据报道,这些知情人士称,张勇正在把更多
硬科技,到底指的啥?文章首发公众号钻石研报。如果你喜欢投资科技行业,还是长线投资者,不妨静下心来寻找一下未来的我们国家自己的硬科技企业。苹果微软特斯拉都是上一代信息技术催生的硬科技企业,它们的市值都突
互联网底层赚钱思维,普通人也可以快速赚钱我开始接触互联网的时候,每天就是闷着头去干,不仅没有效果反而浪费时间,也没有赚到钱,有时候连生活都成问题,每天就在网上找所谓的赚钱项目,特别是日赚几百几千的项目,后面才发现真的那么
运动相机新玩法,大疆Action2给你答案运动相机的存在已经有了多年了,提起运动相机,大家基本上也都略知一二,其携带便捷,操作方便,深受广大户外运动爱好者的喜欢,这次大疆推出的DJIAction2,将之前的运动相机固有观念
手机老是收到网贷放贷短信,该怎么避免?骗局各种虚假贷款和办卡信息只凭身份证就可以贷款或者办理信用卡的信息让你先支付首月利息履约费保证金保险费担保费放款费公证费征信费抵押金开卡费等等,都是骗局。经常收贷信息的原因个人身份
你有用过锤子和坚果手机吗?好用不?文小伊评科技锤子的系统体验和整机CMF设计至今难忘,但是硬件表现一塌糊涂。不过,如果老罗未来还做手机的话,我依旧会买,依旧会做一个锤粉。我是一个锤子T1和M1L的机主,为了证明真实
为什么专家说房价降了没一点好处,特别是年轻人没有奋斗动力了?2021年年的房地产,可以说是最艰难的一年,许家印孙宏斌纷纷变卖自己的资产,让企业度过这次难关。孙宏斌无息贷款4。5亿美元,用于公司运营,而许家印自掏腰包70亿元,用于每个月的债券
如何阻止某人监视您的手机人们在手机上享有隐私权。但是,随着恶意黑客的增加和第三方应用程序的使用,这种隐私正在减弱。公司和网络犯罪分子希望通过任何方式获取您的数据,并将其用于自己的优势。然而,大多数消费者不
使用拼多多时,这3个设置要尽早关闭,现在知道还不晚分享生活小妙招,享受科技新生活!大家好,欢迎来到今天的知识分享!我是你们的好朋友小俊!越来越多的人都喜欢使用拼多多来购买东西,的确拼多多上的东西不仅便宜而且还种类齐全,也给广大老年
索尼PS5Pro概念渲染图曝光更时尚更圆润PS5已经推出有一年时间了,目前仍供不应求。之前有人爆料称PS5Pro正在紧张开发中,推出时间是2023年到2024年。随着时间推移,网上出现许多关于PS5Pro的讨论,然而新机的
抢都抢不到的索尼A7M4到底有多强?A7M4全画幅微单全面测评在上月各类新品的狂轰滥炸后,索粉们期待已久的7系列也迎来了新一代7IV,在7III发布至今的三年里,它始终是国内全画幅市场中销量最高的主机之一,这次7IV的出现是否能打破上一代的傲