一次線上事故

最近做了一個(gè)許愿活動,由于入口是在支付寶,主要針對大學(xué)生,沒想到活動效果特別好,每天有將近100w pv,加上運(yùn)營做了推廣,在同一個(gè)時(shí)間點(diǎn)推了10w短信,瞬間高并發(fā),數(shù)據(jù)庫連接達(dá)到2000。加上我寫的一個(gè)SQL三張表做了關(guān)聯(lián),關(guān)聯(lián)字段沒有索引,產(chǎn)生了慢查詢,導(dǎo)致數(shù)據(jù)庫連接池的資源被沾滿,數(shù)據(jù)庫被拖垮。服務(wù)不可用。

事故主要是因?yàn)榈腟QL引起的,我做了一些總結(jié)和反思:

1 對數(shù)據(jù)庫的索引一直沒有引起重視認(rèn)為可有可無

2 對連表查詢沒有想過風(fēng)險(xiǎn),沒有做過執(zhí)行計(jì)劃分析

3 沒有做相關(guān)壓測,也沒有考慮性能和壓力問題

4 沒有合理使用緩存,沒有對緩存做很好的測試

5 過于樂觀,盲目的樂觀,代碼質(zhì)量不高,代碼健壯性不夠

6 自測不夠全面,過于依賴測試,認(rèn)為流程跑通就可以,沒有覆蓋到所有測試點(diǎn),對緩存的測試不夠全面

7 不夠仔細(xì),不夠細(xì)心不是一個(gè)程序員應(yīng)該有的毛病

反思:

1 加強(qiáng)數(shù)據(jù)庫這邊知識學(xué)習(xí),每次創(chuàng)建表的時(shí)候必須考慮索引,每次需要做連接的時(shí)候必須做SQL分析,考慮連接是否走索引。

2 ?每一個(gè)接口,每一個(gè)功能都要考慮到并發(fā)問題,對高并發(fā)有相應(yīng)的處理措施。

3 規(guī)范的打印日志,需要有入?yún)⒑统鰠ⅲP(guān)鍵點(diǎn)日志情況,以及Linux查詢線上日志,學(xué)習(xí)Linux命令。快速定位線上問題。

4 對緩存的使用需要特別的謹(jǐn)慎,在自己測試的時(shí)候需要,第一次無緩存的裸奔測試,加上緩存的測試,加上緩存和緩存過期的測試。

5 ?認(rèn)真仔細(xì),細(xì)心,不盲目樂觀。

對于一個(gè)工作兩年多的程序員了,我覺得這些錯(cuò)誤真的是不應(yīng)該犯得低級錯(cuò)誤,我覺得這次的錯(cuò)誤對我的信心是極大的打擊,我以前覺得自己技術(shù)很不錯(cuò),現(xiàn)在看來我還是很初級的水平,我那些自信都是盲目的,希望這次教訓(xùn)會讓我深深的記住。

接下來我需要加強(qiáng),MySQL這塊的學(xué)習(xí)(特別重要),Linux的學(xué)習(xí)(特別重要),redis,memcache的學(xué)習(xí)(特別重要)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容