做者:小傅哥html
沉澱、分享、成長,讓本身和他人都能有所收穫!😄
你的代碼出過事故嗎?
前端
老人言:常在河邊走哪有不溼鞋。只要你在作着編程開發的工做就必定會遇到事故,或大或小而已。mysql
固然可能有一部分研發同窗,在相對傳統的行業或者作着用戶體量較小的業務等,很難遇到讓人出名的事故,多數都是一些線上的小bug,修復了也就沒人問了。git
但若是你在較大型的互聯網公司,那麼你負責的開發的系統功能,可能面對的就是成百萬、上千萬級別用戶體量。哪怕你有一點小bug也會被迅速放大,形成大批量的客訴以及更嚴重的資金損失風險。就像:程序員
您使用的程序是內測版本,將於當地時間 2020-03-28 到期,到期後將沒法使用,請儘快下載最新版本。
相似這樣事故的出現,多是由於技術流程、方案實現、技術服務以及運營配置等等緣由產生的。綜合能夠歸納爲如下幾點:github
能夠說,大多數比較蠢的事故主要是我的責任心問題。但那些有技術含量的事故,犯一次仍是挺值得的。雖然公司很討厭你形成事故,由於會給公司帶來損失嘛!但這樣具備具備技術含量的事故,卻對你我的成長很是好的案例。不過禁酒雖好,可不能貪杯!web
接下來,小傅哥就帶着你領略下各種事故的風采,看看在什麼場景、遇到什麼問題、怎麼解決的以及能學到什麼!sql
網友事故分享:數據庫
事故名稱 | 事故描述 | 事故結果 |
---|---|---|
業務流程搞錯+代碼頻繁開闢線程池 | 業務流程搞錯致使的問題就是改動特別大,有點相似重構代碼了哎西,致使服務宕機好久,客戶瘋狂反饋 | 瘋狂加班改業務,加了不知道多少個晚上,因爲是菜狗子,寫的代碼太垃圾了,被大佬給瘋狂叼 |
線上修改用戶收貨地址失敗(同事須要的問題,也能夠借鑑下^v^) | 場景:客服反應用戶須要把收貨地址從河北省改成浙江省(由於疫情),公司要求修改線上數據須要提交工單,所以l到審覈平臺提交申請等一系列流程。 問題:工單顯示修改結果成功,可是數據沒有改過來,多爲同事一塊兒查看sql發現sql編寫沒有問題。 解決過程:檢查sql是否正確,平臺是否修改爲功,又檢查了數據是否正確,還檢查了修改時間是沒有問題的。 | 首先,忽略了一個問題,這個訂單數據是淘寶下單同步到咱們訂單這邊的,數據修改的後,淘寶又同步也數據過來,把修改正確的數據又改成了河北的地址。而後就懷疑sql審覈平臺問題。到這裏故事已經講完了。結論:想告訴你們要相信代碼,多檢查不肯定的狀況,不要鑽到死衚衕,總是懷疑審覈平臺問題,多檢查自身問題。 |
業務相關事故 | 剛加入一個新的團隊,沒有深刻了解別人的代碼就進行復用,沒有理解業務的場景就限制條件,相似的狀況不少,只能說,再簡單的代碼都要保持敬畏,由於你不知道哪裏會出問題 | 用戶投訴、領導批評 |
活動太火爆,換個小手試試
。形成了大量客訴,緊急下線活動排查。網友事故分享:編程
事故名稱 | 事故描述 | 事故結果 |
---|---|---|
gc瘋狂回收 | 最近調整了本身業餘項目,跑一段時間就內存狂漲,還不能主動誘發 | dump內存中 |
重複扣入帳 | 併發數過多,數據庫鏈接滿,等待超時,session斷開。事務未提交,撈出繼續幹 | 500塊,深刻併發編程,目前併發模型在我心中,歡迎battle |
數據覆蓋 | 循環更新數據時,開啓事務,持續時間過長,而後覆蓋掉了用戶在持續事務中提交的數據 | 沒影響,就是多加了幾天班 |
數據穿透 | 第三分使用腳本海里請求併發形成數據穿透 | 削峯天谷, 使用隊列處理請求 |
這序列號咋重複了?? | 序列號應具備全局的惟一,一條數據表明一條收入,序列號生成規則+代碼bug致使序列號重複,影響了幾萬單收入覈對 | 一級事故,回溯+通報 |
業務流程數據覆蓋 | 啓流程是一個公共類,各類交易都在這個裏面作,公共類一開始沒有通過設計,有一個方法返回了這個模板類型字段,同時這個方法又是一個檢驗類,當時加了一個檢驗返回成錯誤碼了,致使全部的交易都啓不了流程。 | 挨批長記性。。。 |
simpledateformat的線程不安全致使多線程定時任務解析日期出錯 | 某定時任務運行時,須要作一些日期解析動做,就用了一個公共變量simpledateformat,來格式化,結果任務常常間歇性報錯,幾天報一次或者一兩週報一次,沒啥規律。看異常信息才發現解析日期的字符串很奇怪,常常出現不少奇奇怪怪的數字。 | 定時任務報錯,不過還好,定時任務只是爲了作緩存而已,不涉及到數據庫的更新,僅僅是查詢而已。 |
前端解析主鍵異常 | 因爲Long類型最大19位而JavaScript最大接收數字爲16位,固存在精度丟失問題 | 統一處理將id轉字符串再返回前端 |
list遍歷刪除 | 遍歷刪除清空list數組,爲了節省計數器那小小一點內存,日了 | 報錯被叼了唄,爲啥不用計數器?不香嗎? |
商品超賣 | 售賣一個兄弟部門的電子券商品,同步庫存的代碼有問題,致使了超賣 對客戶形成了損失 | 罰款1000元 |
網友事故分享:
事故名稱 | 事故描述 | 事故結果 |
---|---|---|
使用fastjson | 全身上下都是高危漏洞,一年不停升級版本打補丁 | 珍惜生命,遠離fastjson |
微信名存儲bug | 微信名的emj頭等存入mysql編碼是utf8的庫報錯 | 被懟了!改爲utf8mb4編碼 |
磁盤不足 | 數據庫集羣磁盤空間不足,提早兩週提交擴容申請,甲方運維沒提交上去,最後某臺機器空間不足,致使整個集羣完全不能工做,體驗一把某國產號稱能夠方便橫向擴容的某idb的優越性 | 罰款,責任歸系統建設方 |
網友事故分享:
事故名稱 | 事故描述 | 事故結果 |
---|---|---|
刪除整個項目目錄文件 | 測試區,測試刪除文件時目錄寫錯,致使整個weblogic子項目目錄被刪 | 請項目中負責集成部署的公司幫忙從新部署,測試區癱瘓了兩天 |
誤更新生產訂單數據3萬多條 | 下班前,未帶核心過濾條件,致使誤更新3萬多條訂單數據,偷偷利用binlog恢復了,耗時3個小時 | 完美恢復數據 |
線上庫整庫誤刪除 | 應業務方要求要在線上環境建立線上聯調庫,使用了導出數據庫DDL語句後,直接執行,致使執行了exists drop語句,刪除了線上庫全部數據,數據量大表均在千萬級,APP、網站全線癱瘓。 | 使用前一天的備份副本數據恢復,下載binlog日誌按操做避開事發時間點分割後編譯,導入數據,而後再修復事故以後的數據,共計耗時48小時。 |
網友事故分享:
事故名稱 | 事故描述 | 事故結果 |
---|---|---|
業務漏洞 | 業務亂配優惠券,能夠疊加,超級優惠,而後被薅羊毛 | 部門幫着查羊毛記錄,處理訂單,挽回損失。而後對外發公告宣稱是被部門的風控系統誤殺的。 |
貸款費率 | 運營配置T+1日結算貸款費率錯誤,致使用戶貸款金額發生錯誤。 | 上線新費率替換舊費率,已經產生的費率錯誤聯繫貸款用戶修復。 |
多活動互斥 | 三個部門的都作活動,但最後致使重複發獎。一個用戶邀請別人獎勵,變成了三份獎勵。 | 產品提供渠道和互斥功能,讓運營本身選擇是否能夠並行發放獎勵。 |
設計評審,把控的是實現流程、代碼評審,把控的是實現方案
,在配合上完善的監控和報警。只有這樣才能更少的減小沒必要要的事故。博客:https://bugstack.cn
Github:https://github.com/fuzhengwei/CodeGuide/wiki