五年java开发生涯中一次吐血的项目救火(程序员何苦难为程序员)

我如今就任于一家中型的互联网企业,去年年末入职的薪资和待遇都很不错,可是总结起来讲的好听就是全村人的但愿,说的很差听就是一我的几乎干了一个项目组的事。下面是个人一次项目救火经历(背锅经历)。就是年后的一个合做公司上线了一个子业务系统,对接公司内部的单点系统。我收到该公司的技术咨询:项目启动后没有规律的忽然没法登陆了,从新启动后,登陆一断时间后又没法从新登陆,对方技术人员一头雾水不知道什么缘由,后台日志没有任何错误信息。我临危受命,赶往该项目进行扑火工做,其实原本2天均可以解决的问题,让我花了5天解决。具体缘由待我一一解释。前端

1,未掌握log日志的精髓

  log日志的debug,info,error信息乱打,该用debug的用info,该用info的用debug......,致使的结果就是一个登录成功请求,后台日志打了300行代码,严重影响了排查追踪问题的效率,项目线上日志级别仍为debug级别,换成info级别呢,结果好多关键信息又没有打印。java

  日志输出格式的关键信息不完善,该日志是在哪类目名、发生的线程,以及在代码中的行数都没有清楚的显示出来,这个日志是哪里打印的都无从知晓。程序员

  关于这里,我想说的是,会的框架再多,spark,flink,hadoop,消息中间件等各类上层框架配置的在溜只是花拳绣腿,log日志是内功,它是往后面对各类线上问题可以快速排查的一种手段。面试

  下面这个是他的日志输出:sql


2,核心参数不作判断

  方法返回的数据不作null或""字符串判断,致使各类状况的空指针异常。项目的功能都是理想化,预想我就是须要这些数据才能给你正确的结果,不然哪里出错我不知道。这个问题致使我在还原案件现场时给我形成极大的困惑,一不留神一个空指针错误,我必须对这个错误进行增强的判断处理,好方便我模拟出登陆屡次后没法登陆的状况。后端

  另外项目中sql语句的in的使用不规范,结合前面的null判断没有,出现一种:"咦,我用这个帐号登陆就成功了,sql是正确的,用这我的的帐号登陆,怎么就报sql语法不正确啊,明明调用的是同一块的代码啊"服务器


很明显的roleid为"'字符串的话,这条sql语句的语法是由问题的。微信

3,局部变量提高为静态变量

  这个是文章开头提的问题的缘由,由于登陆要向单点系统验证用户的身份,因此它采用httpclient框架来发送http请求,它在这里把httpclient的变量做为一个静态变量,而后在方法里面复用该对象,而后方法里面调用完该对象又没有释放资源合理的close,这个框架默认会维护一个链接池,若是你申请一个资源使用后不释放,那么该资源将不被下一个请求使用,新的请求必须在等待队列中等待,而后当用户登陆20次后,把资源池中的请求都耗尽了,新的请求拿不到资源位于等待队列中不断等待,致使服务器超时,登陆失败504错误。架构

当时我看到这个类的静态变量时httpclient的时候,我心中就飘起很差的预感,此处是一个容易出错的地方,若是是我,对这个框架,这个类没有十足的把握,我会它把整成局部变量,这样在低并发下,就让GC去帮我回收吧。并发


改造后:


4,拦截器的路径规划混乱

  这个问题也为我排查问题形成了阻碍,排查登陆问题,我首先要把它一次登陆成功后后端走的方法轨迹追踪出来,看究竟是哪个环节的代码问题,由于没有任务错误信息。他的拦截器呢,一个登陆请求成功拦截器反复执行了三次,中间至少有一次拦截器是没有作任何有效出来,出现这的问题是他前端业务发送无关的请求,被拦截致使的,这个逼得我经过日志插桩计数来还原勾勒出它的完整路径,为我审查代码找到调用httpclient这一块的代码问题提供的机会。

5,乱用try catch

  这个也很恶心,它的代码忽然try catch包装一下,咦,这个家伙得不错,还对某些异常进行特殊打标记录,我仔细看了一下代码,这是什么鬼啊,catch中怎么把异常信息吃了,吃了就吃了,你为啥也不打印异常信息,也不throws异常,就这样凶猛的将异常吃了,明明有问题,它不报,经过它来引起一个新的异常来雪藏真正的问题。

最后我想说,程序员何苦难为程序员,代码留一线, 往后好相见啥。你也不想本身给本身挖坑后,解决不了,而后来一句"大哥,你忙吗,我这有个小问题,帮忙看下呗(嗑瓜子)"。

若是对java微服务、分布式、高并发、高可用、大型互联网架构技术、面试经验交流。感兴趣能够关注个人微信公众号,我会在公众号不按期的发放免费的资料连接,这些资料都是从各个技术网站搜集、整理出来的,若是你有好的学习资料能够私聊发我,我会注明出处以后分享给你们。欢迎分享,欢迎评论,欢迎转发。

                                     

相关文章
相关标签/搜索