将琴存诗
人生 可以不要那么 耀 ,只需要有 一个  平凡的梦想  足以 。—— loveincode -_^ RSS
Fork me on GitHub

致 —— 第一次线上bug

出现时间

2020年01月13日 下午1点03分
午休还未睡醒,听到了老大的呼唤。
老大:XX,群里反馈有问题,你查一下啊。
我:好的!
立刻,瞬间清醒,看群里的问题截图。

具体问题

在线合同去签约,报错【服务器异常】。

问题定位

开始查问题,看日志,后发现因为代码(同事W写)合同过期时间判断有误,使用了过期的合同,进而无法进行签署,前端没绑定错误码描述异常,进而直接提示恐怖的服务器异常错误。

解决

  1. 立刻是找DBA临时修复了有效期的问题。
  2. 同事W修改代码逻辑后发布生产版本。

思考原因

  1. 目前团队缺少codeReview氛围,这种问题应该在codereview就能解决。
    解决:【这里参考下之前很好codeReview方式,组内开发(<10人参加),主写人一行一行讲自己的代码(简单的简单带过,重要的逻辑细致的讲解),参与人有问题就提出,包括代码规范,逻辑问题,优化问题等,大致认同需要改的写上改动,加上fixme标记,然后后边自行修改,改好后让别人check一下即可。】,尽快配合推进codeReview
  2. 日志打印不是很规范,重要的业务一定要打印全部入参 出参,重要节点日志,方便查询问题。
    解决:日志规范个人建议 重要业务的入参,出参,重要节点日志,不要嫌日志打印麻烦,查问题定位问题日志是一个很大的帮手,具体参考《阿里巴巴开发规范中日志规范》
  3. 数据库修改后没有更新gmt_modified字段,这样查问题也会有干扰,
    解决:这个不多说了,update 语句都请更新gmt_modified字段,这也是代码规范的问题。
  4. 测试同学没有覆盖到这块逻辑、包括产品也不清楚这块过期逻辑。
    解决:每一个业务相关的参数都应该让产品 测试知晓。这样才能覆盖全面的测试。
  5. 前端错误异常按给出的错误码显示,笼统的显示为服务器错误,不方便定位问题。
    解决:每一个错误码前端异常提示对应的错误描述,较少定位问题时间。

总结

基本上出现问题是程序员自己埋得坑,除非外在(系统,网络,存储)的情况,出现问题应该第一时间考虑是自己的问题。

虽然这次不是自己的代码bug,但是我负责的项目,所以出现问题还是有责任的,很愧疚的。所以起了致 —— 第一次线上bug的标题,希望自己能够记住。

相信广大猿友们对线上一直都是怀着一个敬畏的心,希望我们的心能够好好的安放。

posted @ 2020-01-13 21:54  loveincode  阅读(373)  评论(0编辑  收藏  举报
最简单即最美
有了信仰,自己要坚持努力 2017.07.09 21:34