因我而起的生產事故

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

  生產事故

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

   事故緣由

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

   問題分析    

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

一、一個線程關閉了一個文件,另外一個線程覺得文件仍是打開的,繼續往文件裏寫數據,這樣會致使進程掛掉(函數對線程是否安全!)函數

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

  解決問題

   解決方法

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

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

   以後,老大找我談話:一個優秀程序員必須經歷各類問題和bug,才能成長;還有之後修改問題,要謹慎!並無很嚴厲的批評,但內心仍是很難受!有人說過:若是跟着一個好老大,就好好地幹幾年!大數據

  總結

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

   一、謹慎!無論對公司或其它怎麼樣?但必定要對本身寫的每一行代碼負責;要多去思考爲啥以前沒有日誌?因此要謹慎!公司並無獎懲措施,努力工做也沒什麼獎勵,犯錯也不會狠狠批評或扣工資之類的,不知道這樣是好是壞?日誌

   二、謙虛學習!還有不少東西要學習!必定要謙虛學習!以前犯錯可能會選擇逃避,但此次很勇敢發郵件認可錯誤說明緣由!

    最後,但願對你們能有幫助,你們加油!

相關文章
相關標籤/搜索