谈谈对bug的一点想法,说说作好日志记录的重要性

       提及程序猿,总绕不开的一个话题就是bug,估计每一个程序猿听到某某测试跑过来一脸淫笑的告诉你这个功能有个bug的时候,总有种巴不得掐死他的想法。其实程序猿跟bug的关系,感受有点像父亲和儿子的关系,本身制造的bug,哭着也要本身解决,就像本身生的儿子,哪天又犯了错,就算气得恨铁不成钢,也要教育他帮他改正同样。好了,扯远了,按照通常程序猿的心理,bug再正常不过了,解决就是了。但是你想过,解决bug的时间和人力成本吗?html

一、bug从修复到解决的流程mysql

       一般状况下,一个bug从发现到解决的流程应该是这几步:    程序员

                                                                                                     

      这其中,发现bug的环节不可控,由于咱们不知道何时会有bug提出来,咱们能作的就是发现bug后用最少的时间和人力成原本解决这个bug(都说技术人员的kpi很差衡量,若是作好了造成了团队的规范准则,应该也能够算一个绩效点,由于能够提升工做效率,至于权重多少,须要配合实际数据来分配)。复现bug环节,简单的问题很好复现,可能比较耗成本又最容易忽视的环节应该是复现bug了,至于定位bug,修复bug和测试环节,由于天生自带主角光环,更容易被重视。那么,有没有办法尽量减小这个环节的时间和人力成本呢?sql

二、为何不要去复现bug?浏览器

一、bug复现可能几率很小安全

      虽然咱们在开发过程当中遇到的大部分的bug都是能复现的,但并不能保证全部的bug都能100%复现,并且常常出现这种状况:用户在IE浏览器上浏览某个网站时,发现某个页面是一片空白,多刷新几回,又正常显示了,这种蛋疼的问题,若是偶尔1,2次出现,多是网络缘由,但若是常常出现,并且不一样的网络场景,不一样的用户都出现了,你还敢说是网络的缘由吗?服务器

      再举个后台的例子:某天某个集群(3台服务器)中某个重要的服务忽然宕机了,接到告警后赶忙先把服务重启了,而后查看了core dump的日志,发现程序中并无死锁和阻塞的线程,并且JVM的GC日志也是正常的,吊诡的是没过多久,另外2台服务器也相继崩了,因而硬着头皮,把全部可能的缘由排查后从新部署,继续运行了几天后,正当你觉得这bug已经解决时,突如其来的告警短信又提醒你服务又相继挂掉了,这时候你是否是要奔溃?微信

      这时候咱们要帮助用户解决他的疑问,就必然要先复现用户的bug来定位问题,而用户的问题出现的场景,每每依赖于用户的操做系统、浏览器版本,机器上装的第三方软件,网络环境,执行操做的顺序,甚至是用户打开了多个网站和网页致使cookie混淆等等多个因素,可能就由于其中某个被咱们忽视的因素的差异,就致使bug不能复现,这时候你是否是很绝望?cookie

二、复现bug有可能成本过高网络

      复现bug的成本,主要分为时间成本和人力成本,你须要模拟环境,mock数据,一步步debug找到问题再修复,这整个流程走下来,可能半天时间就没了,在这过程当中,你可能会找用户或者产品经理详细了解他们的操做流程,或者造数据时须要请求dba帮忙导入数据,这里都会产生时间成本和人力成本。

三、为何作好日志记录?

一、良好的日志规范,能快速有效的定位问题。

      作开发最怕的就是线上系统出问题了,轻则留下产品和系统不安全可靠的很差印象,重则影响到公司的收入和口碑。固然了,线上bug总会存在,这很正常,可是咱们要作到即便出现了问题,也要能快速定位问题修复,也就是要作到常说的4个9:99.99%,不然年终奖可能要打水漂了。说到打日志,想起了关于程序员写注释的一个悖论:程序员最讨厌本身的代码写注释,也最讨厌别人的代码不写注释。打日志可能以为很麻烦,但记录一些关键步骤,关键参数,对于快速定位问题进行修复时大有裨益的。

二、日志打印真的很耗性能吗 ?

      打日志意味着有磁盘IO,为何mysql采用B+树而不是红黑树或者AVL树也是这个缘由:为了减小IO次数。除非是一些高并发接口,不然这就是伪命题。通常系统日均QPS上万都很不错了,对于大部分公司而言,打日志带来的性能损耗是能够彻底忽略不计的。

三、如何作好日志记录?

      请参考日志圣经:《阿里JAVA手册之异常日志(异常处理 日志规约 》,再也不赘述。

      后记:说来惭愧,半年没写博客了,曾经本身许下的豪言壮志又食言了,这篇文章从构思到最终成型也是断断续续写了一个月,其中不少缘由。自从换了家公司,加班时间至少是上家公司的double time,连周末也成了大小周,累的哟,不过习惯就好,让本身忙起来能够作更多的事情。19年又开始了,计划周末再复盘下过去的一年,并规划下新的一年,人嘛,梦想仍是要有的,要否则跟咸鱼有什么区别呢?有想一块儿交流技术和交朋友的欢迎加我微信:1194426086,但愿一块儿进步。

相关文章
相关标签/搜索