因我而起的生产事故
首先,祝大家新年快乐!应该陆陆续续开始踏上了回家的征程吧!
生产事故
产品上线一段时间之后,技术支持反馈客户现场一个进程总是挂掉或者不干活!最开始不紧不慢的查找问题,后来老大很生气说:生产事故很严重,你们居然不重视!成立了一个应急小组,专门解决此问题,其中包括我!
事故原因
经过2、3天没日没夜的艰苦奋斗,终于找到进程挂掉的原因,问题因我而起。大约去年8月,做一个项目,与大数据对接,把数据推给它,然在加上了推送部分的代码,最开始那个模块是没有日志的,然后给加上了日志打印,当时也没考虑那么多,多线程环境,那个函数是线程不安全的,然后高并发环境,会造成进程挂掉!
问题分析
高并发环境下,主要涉及两方面问题:
1、一个线程关闭了一个文件,另一个线程以为文件还是打开的,继续往文件里写数据,这样会导致进程挂掉(函数对线程是否安全!)
2、多线程环境共享全局变量,会造成数据混乱;alarm函数产生的SIGALRM信号,无法估算时间,此处理不严谨(最好不要在线程中用信号)。
解决问题
解决方法
- 在进程最开始打印日志,或不打印日志
- 移动代码位置,在正确位置修改代码
加班到11点,把这部分代码重新修改了!
之后,老大找我谈话:一个优秀程序员必须经历各种问题和bug,才能成长;还有以后修改问题,要谨慎!并没有很严厉的批评,但心里还是很难受!有人说过:如果跟着一个好老大,就好好地干几年!
总结
从小就不怎么犯错,犯过一个错,会很内疚!可能这个问题会伴随整个职业生涯,督促自己成长!
1、谨慎!不管对公司或其它怎么样?但一定要对自己写的每一行代码负责;要多去思考为啥之前没有日志?所以要谨慎!公司并没有奖惩措施,努力工作也没什么奖励,犯错也不会狠狠批评或扣工资之类的,不知道这样是好是坏?
2、谦虚学习!还有很多东西要学习!一定要谦虚学习!之前犯错可能会选择逃避,但这次很勇敢发邮件承认错误说明原因!
最后,希望对大家能有帮助,大家加油!
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!