從西安一碼通崩潰,看壓力測試重要性及Bug分析
西安一碼通伺服器出現問題,服務崩潰了!!!頁面沒有個人資訊顯示,撥打西安一碼通服務熱線也無法接通。全市都無法使用。官方只表示正在對系統緊急搶修解決,請大家耐心等待。西安“一碼通”因訪問量過大導致系統崩潰,登上熱搜。
那我們就從測試角度分析一下這次問題可能出現在哪裡,以及壓力測試對系統的重要作用和出現此類問題有什麼方法補救
故障原因分析
原版,開啟西安一碼通健康碼後,底下會有:
綠碼+二維碼+疫苗接種情況+最近一次的核酸結果(15天內)
點選“核酸結果”展開,可以看到最近7天內的所有核酸結果
在20號癱瘓一天之後,新版一碼通變成了這樣:
綠馬+二維碼
可以看到【核酸結果】和【疫苗接種情況】不再顯示,核酸查詢入口挪到主介面,讓公交地鐵等只掃碼但不看核酸的場景不再查詢核酸。
只顯示最近一條記錄,手動查詢其他日期也不再顯示。
這些措施明顯是為了:
1、減少綠碼頁面的響應資料,
2、減少核酸結果頁面查詢預設結果
原來舊版開啟綠碼,資料庫查詢健康碼錶1次+最近核酸表1次+查詢疫苗接種表1次+查詢7天內所有核算結果1次。(理想情況下,如果資料從不同系統查詢引入另說)
修改後的綠碼,資料庫查詢健康碼錶1次
核酸頁的查詢也只變成查詢一次最近結果
由上述改動方案來看有可能是幾點導致伺服器癱瘓的情況:
1、有些場景只需要綠碼頁面,不需要核酸,原版都在一頁展示,頁面查詢介面併發量過大;
2、市民上班時間集中使用遇到無法刷出健康碼的情況,多次嘗試重新整理進入,進一步增加併發,伺服器瞬時訪問流量急速上升,資料庫效能也跟不上;
3、沒有考慮高流量高負載的情況,導致測試不充分;產品設計未考慮千萬級的併發訪問,交付前未進行同等級的壓力測試。
根據百度資料,西安人口約1300萬,屬於千萬級別
問題解決建議
新版的一碼通已經給出了他們的解決方案:
1、業務剝離,將核酸結果從綠碼分開使用,細化區分使用場景,將業務關聯度比較高的模組獨立化。
2、減少介面通訊資料,查詢7天內所有核算結果變成最近一次查詢結果,日期查詢無結果,砍功能了屬於是。
除了這兩個還可以,1、短時間內多次請求可做防抖機制(應對多次嘗試重新整理進入);2、核酸結果建議做快取機制,24小時間隔後再次訪問強制重新整理,介面可帶時間戳引數;3、新增高效能自動化測試,壓力測試;在釋出前做預防機制;
另外由於西安應急措施不足,導致應對秩序混亂,公交地鐵手動登記,考研因考點關閉導致的無措,加上出血熱,希望肉夾饃加油,大家都能平安健康
總結相當於二次學習和提煉,強化記憶,希望自己堅持下去