记一次重大的生产上线事故,借此反思成长
目錄
寫在前面
生產上線出現問題
問題1:logger日志沒打印報錯信息
問題2:日志打印不全的問題
問題3:equals報空指針問題
問題4:還是空指針問題
問題5:json報文字段上送有誤
問題6:微服務配置問題
問題7:上線問題
問題8:代碼的可讀性
寫在最后
加油,打工人
寫在前面
? ? 畢業兩年,一直都是做的一些小型的管理系統,對于真正的互聯網大項目接觸的很少,基本上只有在自己學習的時候才能接觸到。
? ? 自認為自己掌握的技術已經足夠了,可是,最近這堂課,真的是結結實實的讓我明白了,其實技術只是其中一回事,經驗真的非常重要。
? ? 但是最最重要的,還是自己的態度,自己的認真和仔細。
生產上線出現問題
? ?項目開發完了,是springcloud的項目,因為自己這種互聯網的項目接觸的的確比較少,所以生產出現了很多問題。
問題1:logger日志沒打印報錯信息
log.error("sftp上傳文件失敗"); 以上代碼有沒有出現在你的項目中?如果有,就需要反思一下了。 這種日志打印是不會打印報錯的堆棧信息的!!出現問題連找都不知道從哪找!并且只是一串光禿禿的文字打印,到時候生產日志一堆,從哪里找你的日志? 以下是調整: log.error("id為{}的任務sftp上傳文件失敗", id, e);問題2:日志打印不全的問題
日志打印是非常重要的,這是測試、生產查找和定位問題的關鍵。
日志一定要在關鍵位置打,并且攜帶時間、流水號、提示信息。
這樣查找問題一定會事半功倍!
問題3:equals報空指針問題
String name = student.getName(); if(name.equals("張三")){ //xxx }如上代碼貌似看起來也沒什么問題。但是!name如果是null的話,就不可避免的出現空指針了。
以下是調整:
String name = student.getName(); if("張三".equals(name)){ //xxx }問題4:還是空指針問題
空指針問題一定要嚴防!一定要控制在任何可能出現空指針的地方做好判斷!
尤其是string字符串操作的時候,一定要謹慎謹慎!
問題5:json報文字段上送有誤
有的字段,比如說職業,有的接口是枚舉值(0、1、2等),有的接口就是漢字,一定要確認確認再確認!
有的字段,還是拿職業來說,如果送的是漢字,結果自己理解成枚舉值,結果落庫時字段長度設置少了,就會報數據庫的錯。
還有,報文字段一定要一一對應好,這個字段該送什么,那個字段該送什么,不明白的一定要問,不要怕打擾別人。畢竟不管怎么樣總比生產出問題強。
問題6:微服務配置問題
因為項目使用微服務,所以有多個微服務,導致配置量增多。
每次上線都要檢查很多配置項,其中如果不夠仔細就會遺漏。所以,每次開發的時候,一定要隨手將自己要添加、修改的配置項進行記錄,上線的時候做好充分檢查。
問題7:上線問題
因為開發人員和上線人員畢竟不是同一個人,所以上線文檔要寫的詳細詳細再詳細!
其中有一項不詳細,就很容易造成生產事故!
問題8:代碼的可讀性
代碼的可讀性很重要。可以參考(重構-改善既有的代碼設計),這本書雖然比較古老,但是讀完之后真的對我受益良多,強力推薦!
寫在最后
不管是代碼出現bug、生產出現問題,第一件事永遠不是想著要甩鍋。
是自己的問題就要勇于承擔,但是最最重要的就是,要時刻進行反思與總結。
出現問題不可怕,可怕的是一錯再錯不知悔改!
加油,打工人
總結
以上是生活随笔為你收集整理的记一次重大的生产上线事故,借此反思成长的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql登录、导入导出、用户权限、事务
- 下一篇: CGLIB代理到底是个什么东西?这是一篇