因我而起的生產事故


  首先,祝大家新年快樂!應該陸陸續續開始踏上了回家的征程吧!

  生產事故

   產品上線一段時間之后,技術支持反饋客戶現場一個進程總是掛掉或者不干活!最開始不緊不慢的查找問題,后來老大很生氣說:生產事故很嚴重,你們居然不重視!成立了一個應急小組,專門解決此問題,其中包括我!

   事故原因

    經過2、3天沒日沒夜的艱苦奮斗,終於找到進程掛掉的原因,問題因我而起。大約去年8月,做一個項目,與大數據對接,把數據推給它,然在加上了推送部分的代碼,最開始那個模塊是沒有日志的,然后給加上了日志打印,當時也沒考慮那么多,多線程環境,那個函數是線程不安全的,然后高並發環境,會造成進程掛掉!

   問題分析    

   高並發環境下,主要涉及兩方面問題:

1、一個線程關閉了一個文件,另一個線程以為文件還是打開的,繼續往文件里寫數據,這樣會導致進程掛掉(函數對線程是否安全!)

2、多線程環境共享全局變量,會造成數據混亂;alarm函數產生的SIGALRM信號,無法估算時間,此處理不嚴謹(最好不要在線程中用信號)。

  解決問題

   解決方法

  1. 在進程最開始打印日志,或不打印日志
  2. 移動代碼位置,在正確位置修改代碼

   加班到11點,把這部分代碼重新修改了!

   之后,老大找我談話:一個優秀程序員必須經歷各種問題和bug,才能成長;還有以后修改問題,要謹慎!並沒有很嚴厲的批評,但心里還是很難受!有人說過:如果跟着一個好老大,就好好地干幾年!

  總結

   從小就不怎么犯錯,犯過一個錯,會很內疚!可能這個問題會伴隨整個職業生涯,督促自己成長!

   1、謹慎!不管對公司或其它怎么樣?但一定要對自己寫的每一行代碼負責;要多去思考為啥之前沒有日志?所以要謹慎!公司並沒有獎懲措施,努力工作也沒什么獎勵,犯錯也不會狠狠批評或扣工資之類的,不知道這樣是好是壞?

   2、謙虛學習!還有很多東西要學習!一定要謙虛學習!之前犯錯可能會選擇逃避,但這次很勇敢發郵件承認錯誤說明原因!

    最后,希望對大家能有幫助,大家加油!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM