美文网首页
【运维】记一次上线前的紧急定位与修复-献上九条小经验

【运维】记一次上线前的紧急定位与修复-献上九条小经验

作者: 南瓜慢说 | 来源:发表于2019-11-14 08:29 被阅读0次

1 简介

本文介绍了作者所在团队在某次上线前测试发现问题、定位问题并修复上线的过程,最后给出几点经验总结,希望对大家有用。

2 过程

(1)今天需要上线,但昨晚才合并了所有分支,时间很紧迫。不幸的是,打包测试后发现有一个Springboot应用(模块R)启动失败,但进程没有死,一直在输出报错日志

(2)Google了相关的报错日志,并没有找到相关信息。查看了模块R的代码变更,并没有什么改动,以为是环境问题;部署到其它环境后,发现问题依旧存在,而且这个问题从未出现过,基本排除环境问题,问题还是出在代码上。

(3)启动模块R上一个版本(现生产环境)的代码,正常启动。所以问题还是出现模块R的改动上。

(4)对比模块R的发布包的新版本与生产版本的差异,发现第三方依赖包都一致,但自己项目的依赖包不同。

(5)想到一个有效的办法,依次用生产版本替换掉自己项目的包,最终定位了问题出在通用模块D上。

(6)查看模块D的代码变更记录,改动比较大,比较难发现是哪里的改动造成的。

(7)重新看日志。为何要重看呢?并不是心血来潮,主要是想找关联。既然已经知道了问题在哪个模块代码上,通过查看日志与该模块可能相关的信息,或许能找到蛛丝马迹。

(8)果然!!!重新查看日志发现,模块R启动时,报了一个其它错误ErrorA,但被后面不断重复出现的错误ErrorB刷掉了,所以一开始并没有注意到它。通过该报错,与模块D的代码改动对比。终于定位出了问题!

(9)创建hotfix分支,修改代码提交,重新merge,打包,测试通过,部署生产!!!

因为部署上线是有特定的时间窗口的,如果错过了时间,就要下次再上线,还好及时定位,及时解决!

3 经验总结

(1)不要放过任何日志,特别是报错的日志,日志是极其有用的。不要只看最后面的报错,也不要只看最前面的报错,任何报错都可能提供新的方向和线索。如果日志信息不够,可以尝试打开debug模式,会有大量的日志信息,当然也要求你有足够强的过滤和整理信息的能力。

(2)提取有用日志,可以用greptailless等linux命令。

(3)组件化、模块化很重要,能快速缩小问题范围。能通过只回退某个模块实现部分功能先上线。

(4)善用对比工具,如diff命令,BeyondCompare软件等。

(5)善用代码变更记录,这是版本控制给我们带来的好处,可以方便我们对比代码改动了什么,什么时候改的,能加速问题定位;也能及时回退代码。

(6)上线前要做充分的测试。这次问题的出现项目流程上的原因在于没有进行充分的测试。(1)写代码的人修改了通用模块,却没有测试依赖它的其它模块的功能会不会受影响,而只测试了自己那一部分;(2)合并代码后,没有足够的时间来进行测试。部署前一天,才合并了代码打包测试。所以时间非常紧迫,在短时间要定位问题并解决,容易造成压力。

(7)要有独立的测试环境。这个是导致方向性错误的原因,经过是这样的:A同学打包了自己的分支,这时刚好B同学稍晚一点也打包了分支,而打包的环境只有一个,B同学的包覆盖了A同学的包。所以在A部署的时候,实际用了B同学的代码打的包,导致启动失败。所以一直以为是A同学代码的问题,这个方向性的错误浪费了很多时间。应该要让每个分支可以同时打包,但不会覆盖。

(8)不要先入为主。不要过早认定某个模块就是有问题的,请参考上一条。

(9)团队作战,分工合作。整个过程全靠团队一起协作才能快速定位并解决;打造一个开放包容、沟通顺畅的团队是多么的重要。

If You Want to Go Fast, Go Alone. If You Want to Go Far, Go Together.

4 最后

运维和问题定位的知识很多,也非常重要,需要持续学习。本文仅讲述了本次过程用到的方法。更多的知识以后慢慢再介绍...


欢迎关注公众号<南瓜慢说>,将持续为你更新...

file

多读书,多分享;多写作,多整理。

相关文章

  • 【运维】记一次上线前的紧急定位与修复-献上九条小经验

    1 简介 本文介绍了作者所在团队在某次上线前测试发现问题、定位问题并修复上线的过程,最后给出几点经验总结,希望对大...

  • 2018-11-23

    运维相关思想及概念 一、运维概念(一) 运维是一个非常广泛的定义,在不同的公司不同的阶段有着不同的职责与定位,如果...

  • 上线与运维管理

    仓库系统上线 运行环境准备 仓库初始化 数据初始化 联调测试 启用自动调度 数据生命周期管理 交互区 集成区 近线...

  • 运维面试题

    1、什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正...

  • Linux运维面试题60道(精华篇2)

    1、什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正...

  • 哥哥手把手教你Android热更新,到底是更新啥?

    正常开发流程:新版本上线,发现问题或用户反馈bug,紧急修复,上线版本,用户重新安装。 热修复流程:新版本上线,发...

  • Android 热修复、插件化、组件化、 增量更新概念理解

    Android热修复 正常项目开发流程:版本1.0上线-》 用户安装-》 发现bug-》 紧急修复-》 重新发布版...

  • 紧急Bug修复上线流程

    我们在测试的过程中不可避免的会遇到线上BUG,那如果来了紧急的线上BUG我们该如何处理呢?我总结了一个流程图请大家...

  • 认识运维工作不能犯的8个错误

    错误1:运维是运维人的运维 这个是必须首先要纠正的,因为它关系到你的定位和团队未来的发展。当你把运维限制在运维人的...

  • Android热修复原理解析

    概述 热修复即”打补丁“,当一个app上线后,如果发现重大的bug,需要紧急修复。常规的做法是修复bug,然后重新...

网友评论

      本文标题:【运维】记一次上线前的紧急定位与修复-献上九条小经验

      本文链接:https://www.haomeiwen.com/subject/ssulictx.html