1. 程式人生 > >【專項測試】京東“猴子搗亂”

【專項測試】京東“猴子搗亂”

猴子搗亂

        通常情況下,京東的系統是久經考驗的,加之系統的多機房多叢集部署,一般情況下不會發生重大的問題,但是在每年的618京東購物節和11.11購物節期間,系統流量會有瞬間的峰值,而且此瞬時峰值每年都會增加,面對如此的突入其來的瞬間峰值,對交易系統的穩定性和可用性將是一個重大的考驗。所以每年在兩個購物節來臨之前,京東都會組織力量進行演練,進行系統搗亂測試,故名為“猴子搗亂”。

介紹

       “猴子搗亂”是京東為了檢驗各方系統的應急響應能力,在系統執行過程中,人為地隨機制造一些影響系統執行的問題,使系統在執行中出現問題,由此來檢驗測試工程師和研發工程師對系統的把控能力和異常處理能力。這裡主要就是檢查系統執行中各項降級功能和限流等操作是否能夠及時切換並生效,做到適當的應急處理。

       通過演練,制定出系統在執行過程中出現各種問題時的應對策略,以確保在大促期間系統能夠穩定執行,給使用者提供良好的購物體驗。

搗亂流程

       搗亂是線上系統上進行的,所以有一定的風險,為了避免出現問題,在進行搗亂之前,先要有各個研發組對本組的系統進行架構和技術分析、梳理,在分析的基礎上找出本組系統最可能出現的問題,針對可能出現的問題,給出合理的應對措施。形成各自業務系統的演練方案,並對演練方案進行反覆論證。

       在演練前,組織所有參加演練的人員對演練系統進行培訓,演練系統是一個可以模擬幾乎所有網路和軟體故障的系統(對於硬體故障還不能完美模擬),要做到懂得演練系統的使用方法和故障的恢復方法。並對各組的演練方案進行評估,最後確定各組的演練方案。下圖是一個搗亂方案:

 

圖24-4 猴子搗亂方案

 

       尋求運維部門的幫助,因為有些操作(比如停止資料庫服務、停止一些web服務、宕機等物理故障)研發工程師和測試工程師是不能恢復的,只能尋求運維部門的配合和幫助。

       因為搗亂是在線上系統中進行的,所以為了避免對線上的交易成影響,需要先把一個機房的流量切換出去,是正常使用者的流量不進過這個機房,然後確定沒有流量後,在夜間進行搗亂演練,進行過程要有專人監控系統,觀察出現故障的時間,在出現故障後,技術人員進行故障排除和修復。

        在搗亂完成後,形成一份搗亂報告,報告中確定故障發生的系統,發生的故障型別,發生時間,修復方法,修復人員,回覆時間。並把各組的搗亂方案和報告結合借來,是各組的所有人員都掌握搗亂的方法和故障的修復方法,為大促期間的系統保證做準備。搗亂報告的記錄表如下:

 

圖24-5 搗亂結果資料

 

 

      搗亂結束後,對搗亂的所有資料進行彙總,統計達標或未達標的數量,對未達標的專案需要進行整改。

 

圖24-6 演練結果統計表