• 致 —— 第一次线上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的标题,希望自己能够记住。

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

  • 相关阅读:
    Oracle 列顺序测试
    Java基于Servlet过虑器
    Java基于Servlet 验证吗
    WCF实例上下文
    WCF的行为与异常-------配置文件说明
    WCF异步
    WCF的通信
    分布式架构剖析
    [loj2542]「PKUWC2018」随机游走——min-max容斥+树上高消
    [bzoj4589]Hard Nim——SG函数+FWT
  • 原文地址:https://www.cnblogs.com/loveincode/p/12188996.html
Copyright © 2020-2023  润新知