遇到生产问题,你会慌嘛?
前言
大家好,我是捡田螺的小男孩。大家周末愉快呀。
作为程序员,我们经常需要面对bug。刚毕业的孩子或者工作没多久的程序员,遇到生产问题,很容易就惊慌失措。其实,我们都知道,着急是没有用,因为急是解决不了问题的。
今天田螺哥跟大家一起来聊聊,如何应对生产问题。当然,这句话既是对你们说的,也是对我自己说的,我自己也在成长阶段啦。
1. 调整好自己的心态。
遇到生产问题时,着急是人的一种正常反应,我们要做的是,冷静一下。一定要调整好自己的心态。
因为如果你急的像热锅上的蚂蚁,领导看在眼里,会觉得你并不靠谱,下次有比较重要的开发任务,相信他不会再交给你了,并且后面什么绩效等等,估计也好不了哪里去。
还有一点,着急的话,很容易就分散你解决问题的精力!所以遇到生产问题,需要先调整好自己心态,泰然处之。
2. 专注于解决问题!
调整好心态之后呢,我们需要专注于如何解决问题。
如果你的问题,是监控报的异常,你需要去仔细查询日志,分析日志,是哪里出的问题。比如,简单的,是不是空指针异常了;又或者是不是没控制好接口幂等,唯一索引报的Duplicate key
等等。
如果是CPU
负载过高,那就可以打印堆栈信息分析一下。jstack
生成线程快照,来分析程序异常,是Java程序员的必备技能。之前写过一篇jstack的文章,大家可以看下哈
如果是慢SQL的原因,就分析如何优化,是加索引好呢,还是控制SQL的数据量好呢,等等。
如果是业务投诉,说程序哪里的业务功能实现有问题,那就要好好分析当前的一下关键日志以及,回头看看你的业务代码啦。反正就具体问题具体分析吧,你冷静下来,分析怎么解决你的问题就好了。
3. 汇报解决方案,分析可能造成的影响
如果你找到了问题出在哪里,那就列出解决方案。比如是慢SQL的原因,那到底要在哪个字段加索引,还是加时间范围控制数据量等等,你就一一列出来,跟上级领导汇报解决方案。
除了汇报解决方案,还有一个很重要的点,那就是分析可能造成的影响!生产上的问题,是会影响到用户的,我们需要分析影响到哪些用户,影响的功能点是什么,以及补救方案。如你的一个空指针异常,影响到客户信息展示,然后你的补救方案,是不是补数就可以了。
4. 乐于沟通!寻找领导帮助
虽然说,领导更愿意听到的是你的解决方案,而不是你给他抛出问题。但是呢,有时候,我们由于经验不够等原因,有些问题,一时半会确实找不出解决方案。这时候,你可以向有经验的程序员请教,向你的领导寻求帮助。
自己不知道怎么解决的时候,千万不要一个人闷声在那里瞎想!我们要的,就是快速解决问题!
5. 技术输出,多总结生产问题
解决完生产问题后,建议大家可以写写技术总结,为什么会出现这个问题,如何规避解决这个问题等等。
比如这个问题是,因为delete in 子查询不走索引导致的,那你查下资料,原因是啥嘛。可以写篇技术博客分享出来,总结的时候,自己印象加深了,并且避免公司其他同事下次跟你犯一样的错误嘛。之前有篇生产问题的技术总结,大家可以看下哈:
6. 平时开发设计时,统筹兼顾!
从出现的生产问题,可以反思我们平时开发设计时,要怎么想得周全一点。比如来个简单的例子,你需要查询个用户信息,假设查不到,你怎么处理,代码是不是需要做下非空判断。再比如,你在登陆注册加个通知功能,是不是要考虑异步呢。之前写过一篇如何减少bug的文章,大家有兴趣可以看下哈。
何为统筹兼顾呢?开发设计过程中,处理比较明显的bug需要考虑规避。并且需要考虑,假设你这样设计实现,可能会有什么问题呢,以及如果有问题,你的补救方案是怎样呢。
比如你设计一个新功能开发,如果这个接口出问题了,是不是会导致老功能有问题呢?那你是不是可以加个开关什么的呢? 比如对方发个广播消息,你是不是需要考虑,如果消息丢了,你没收到,怎么处理呢?业务可以接受嘛?是不是可以下次消息再来时,跟上次对比一下等等。
最后
好啦,今天就聊这么多哈,希望对大家有帮助呀。所以遇到生产问题,我们千万不能慌!不怕你说我啰嗦,总结一下:
调整好自己的心态。 专注于解决问题! 跟领导汇报解决方案,分析可能造成的影响 乐于沟通!寻找领导帮助 技术输出,多总结生产问题 平时开发设计时,统筹兼顾!
推荐阅读:
欢迎关注微信公众号:互联网全栈架构,收取更多有价值的信息。