线上故障处理——发布顺序错误引起的数据库异常

小说:网贷投资作者:平卓安更新时间:2019-01-20字数:92119

“慢着,这个大家伙刚才对我们无礼,这件事可就不能随便算了。这样吧,这两个小姑娘留下来陪我们喝几杯吧”这个家伙伸手便是向着纳兰的下巴上摸去。

合融汇网贷赚取佣金

龙一不以为然,蓝玉确实厉害,那一脚力道十足,幸亏龙一反应够快,加上对方仓促出脚,虎组千户中的那一拳必然更重,厉害又怎样,最终还不是要死,现实让龙一清楚,光有本事还不够,一定要有拥有权势、金钱,只有这样才能成为命运的主宰者,而不是承受者。
“敌袭。”就算艾斯德斯选择的时间很对,但是吴三桂毕竟是打仗的能人,而且他也知道整个天下无数人巴不得他快死,再加上他最近可是准备造反,这些士兵也没有偷懒,所以第一时间察觉到不对。

不论是泰坦还是宁风致,都不是赵无极惹得起的,此时弗兰德、大师、柳二龙三人,以及能够镇得住场子的毒斗罗都不在,他可不希望这里被眼前这位大力神给拆了,赶忙道:“各位远来是客,快里面请。所有学员都回去上课,谁让你们聚集在这里的?”

今天系统版本发布,多个因素凑到一起引发线上故障。这个排障过程做的不是很好,存在很多改进的地方,作为排障的反面教材,分享给大家。

先说下今日版本内容:User系统周版本含service应用和数据库脚本两部分,其中数据库有两个脚本:001-清理不合规则的设备登陆记录和设备记录;002 - 第三方账户绑定表新增表字段。

故障追溯

  • 16:41 运维人员开始发布版本,开始执行脚本;
  • 16:42 运维人员开始发布service;此时脚本001脚本还未执行完成;
  • 16:50 产品经理找开发确认系统是否存在问题,导致管理端无法查询用户信息;开发开始介入查证;
  • 16:59 开发人员接到同事电话反馈,用户登录功能也存在问题;
  • 17:01 运维人员发现并反馈脚本001还未执行完成,执行时间过长;
  • 17:03 开发人员怀疑001脚本清理数据时锁库,要求DBA kill掉001脚本执行进程;
  • 17:07 DBA kill掉001脚本执行进程,但是服务未恢复;
  • 17:08 开发人员怀疑service应用未能重新获取到数据库连接池,故要求运维人员重启service服务;
  • 17:10 运维完成service重启,服务未恢复;
  • 17:11 开发人员查看应用日志,发现大量报错“ORA-00904: "XXXXX": 标识符无效”,检视版本内容中,002脚本存在新增字段XXXX的脚本;
  • 17:12 开发人员整理思路推断:001脚本未执行完成,进程kill后,部署平台不会继续002脚本,但由于运维先行发布了service,所以导致上述ORA-00904报错;
  • 17:12 要求运维人员手动执行002脚本;
  • 17:13 运维人员手动执行002脚本;
  • 17:14 开发人员验证服务并监控日志,确认服务已经恢复。排障结束。

过程剖析

整个故障处理中,我们发现“故障发现”过程持续了近8分钟(16:42~16:50),“故障定位”花费了22分钟(16:50~17:12),“故障处理”花费了1分钟(17:12~17:13)。其中"故障发现","故障定位"两个阶段存在严重不足,下面一一剖析。

“故障发现”过程

最大的问题在于:服务缺乏告警,未能及时发现系统故障。从16:42 service开始发布,故障产生,到16:50 开发人员介入故障处理,期间没有任何告警出来,最后是由于用户反馈系统存在异常,才知晓系统故障。理论上,如果存在告警系统,1分钟之内便可以发现故障,可以节约7分钟,7分钟对于生产系统来讲是很宝贵的。

线上service服务有访问量、时延、错误率的监控,但是没有基于这些监控数据的告警,后续需要补上。

“故障定位”过程

最初开发人员接到产品经理的反馈只有用户管理端部分查询功能不可用,便没有提升优先级,让团队其他人一同介入处理;后接听到其他团队反馈用户登录存在问题时,才介入,并提升优先级;这反映出团队没有一个良好运作的故障排查协作机制,不能迅速地完成故障识别及故障升级,开发人员意识不足,需要加强培训。

在故障定位过程中,开发实践地比较好的技巧在于:

  1. 在得知运维同事给到的“数据库脚本执行时间过长”的信息后,第一时间要求DBA杀掉该执行脚本链接,此行为可能无法解决根本问题,但是对于此类异常现象的解除通常对故障恢复和系统运行有帮助,因此,在故障原因不太明朗的情况下,这个行为是有利于故障恢复的,值得肯定。
  2. 快速检视版本变更内容对故障带来的影响。

做的不好的地方:

  1. 开发人员在要求DBA杀掉脚本执行链接的同时,没有去查看应用日志,以最终确认问题点。

总结

根据此次排障过程中,后续再如下几个方面需要改进:

  1. 在团队内宣导线上排障的思路,制定故障排查的协作机制,提升开发人员的排障意识;
  2. 完善服务告警,在现有监控数据上,增加服务错误率的告警,以便迅速发现故障,为排障争取更多时间;
  3. 部署平台需要加入“版本依赖”强控制,确保依赖版本在被依赖版本之后发布;
  4. 服务优化,登录服务和非关键业务表解耦,提高登录等关键服务的稳定性。

参考资料

如何快速处理线上故障

编辑:华董乙

发布:2019-01-20 01:31:25

当前文章:http://leetaemin.cn/news/20181089117.html

兴晟时代返佣平台 合融汇返现平台 墨瑶客0元代理 亿财宝官网 贷款哪个平台最可靠 办理信用卡返佣金 网贷是违法的吗 专业网贷哪家速度快

32248 57062 71968 48843 16369 5716086356 40509 77961

我要说两句: (0人参与)

发布