淺談常態化壓測 | 京東物流技術團隊

2023-07-10 12:00:55

一、常態化壓測介紹

1.什麼是常態化壓測

常態是指:「正常的狀態」;「化」在這裡是表示轉變為某種性質或狀態。

「常態化」的含義就是:趨向正常的狀態。

那麼常態化壓測顧名思義就可以解釋為,讓壓測趨於正常的狀態,趨於合理;因此通過調研給瞭如下定義:常態化壓測是指在某個產品或系統上進行自定義週期(常態化)的、系統自動執行的、可驗證結果的壓測過程。目的是檢測產品或系統的穩定性、可靠性和效能,確保它們能夠在不同的場景下正常執行。

2.為什麼要進行常態化壓測

隨著業務的不斷增長,支撐業務系統的壓力也逐漸增加,會面臨如系統越來越厚重、邏輯越來複雜、迭代節奏越來越快等繁雜的情況。我們當前並沒有做到在每次變化時快速識別出效能風險,檢測產品或系統的穩定性、可靠性,而且我們還在不斷的投入人力成本在壓測這件事情上也是不合理的,所以我們要將效能驗證融入到我們日常的工作中,把壓測做到常態化,做成平常的一件事。

3.常態化壓測的價值

  • 快進快出,最小單位安排壓測任務,減少人員投入
  • 儘早識別效能波動,避免風險後置
  • 可複用性高,壓測模型、業務模型可複用
  • 業務可用性保障

二、常態化壓測實踐

1.常態化壓測流程介紹

藉助泰山平臺中的Forcebot工具,進行常態化壓測執行。設定常態化壓測任務,設定壓測執行計劃,按照預設的資料模型、基線值等進行執行。在累積一段時間的壓測結果後,可以對基線值、壓測目標進行調整和調優,然後繼續進行自動化週期性的壓測。同時跟進結果,及時關注最近業務和系統的變化。

  • 明確壓測目標

明確常態化壓測的目標,可以區分日常和極限兩個場景。根據不同的場景設定不同的壓測目標,第一次實踐以單介面的日常流量為主,觀測日常流量下的效能波動,確定正常範圍值。

  • 常態化計劃

根據介面的優先順序,介面服務的流量,日常迭代程式碼改動的頻率,設定對應的計劃。核心介面、流量較大、程式碼改動頻繁的介面,常態化壓測的週期建議短一些,可以一週1-2次,且放在每次上線後進行;如果是非核心、流量小的介面,可以每週或每雙週進行一次。

  • 壓測前期準備

確定測試場景根據實際場景,設計壓測場景,包括使用者數量、請求型別、請求頻率、請求引數等,以儘可能模擬真實的業務場景。編寫壓測指令碼,設定按照真實請求資料比例設定引數化,以便於進行自動化測試。

  • 壓測中期關注

在壓測過程中,主要是無人值守的狀態,所以需要提前識別壓測可能帶來的風險,以及面對不同的風險需要採取的措施。

同時還要關注壓測過程中如果出現效能波動,系統發出的預警方式是否及時、預警內容是否準確。

  • 壓測後期跟進

每次常態化壓測計劃執行後,都需要關注本次的結果:① 結果符合預期,則要關注下指標的波動; ② 若結果並不符合預期,則要刨根問底,找到問題的所在; ③ 跟進問題直到解決,解決後重新驗證。

  • 輔助功能-流量染色

流量染色指根據流量協定,設定對應的流量染色規則,對指定的流量進行染色標記,並在整個呼叫鏈中攜帶該標記。

通過流量染色,可以實現壓測流量隔離,同時可以保證日常壓測對生產流量無影響。但是對於常態化壓測來講,流量染色並非必須,而是錦上添花的功能,可以進一步保證我們的流量對生產無影響。

2.首次進行常態化壓測實踐

2.1 準備階段

① 獲取基線值資料

② 壓測指令碼、場景、資料模型準備

③ 壓測環境準備

④ 壓測計劃制定

2.2 執行階段

2.3 調優階段

以7-10天為一個週期,記錄資料。不考慮特殊節日、特殊活動的場景,驗證基線資料的可信賴性。如發現高於30%的概率,每天的資料都不符合基線值,可調整基線值的浮動範圍,以保結證結果在日常值的範圍內。

調優的過程也要關注,在資料統計過程中程式碼的改動,如果確定是程式碼的改動影響了整體的效能,這就要根據實際的場景和影響範圍進行評估。

2.4 覆盤階段

經過一段時間的常態化壓測,需要對整個流程和結果進行復盤,好的覆盤結果能夠幫助我們避免後續的一些「坑」。參與常態化壓測的所有人員一起,主要關注一下幾個方面:

① 資料是否正確,是否達標,是否可信賴

② 常態化壓測流程、計劃相關問題

③ 壓測過程中的效能問題總結

三、常態化壓測總結

① 建議覆蓋場景 可以根據自己所負責的業務進行考量,如果不會出現很大流量的情況下,建議覆蓋日常場景即可滿足需求;如果需要考慮大流量並行的場景,建議覆蓋日常的基礎上,在覆蓋極限的場景。

② 關注風險控制 常態化壓測要做到的是模擬生產真實場景,實現日常自動化壓測,儘量做到無人值守,所以提前識別出可能的風險是非常必要的,同時要列出不同的風險項對應的舉措。

③ 常態化壓測只是輔助驗證業務效能的一種手段 不是說我們進行常態化壓測之後就不需要進行效能測試了,兩者之間是沒有衝突的。

寄語:每個人負責的工作是不同的,不同人會有不同訴求,對同一件事也會有不同看法,不過蘇軾有句話:「犯其至難而圖其至遠」,意思是說「向最難之處攻堅,追求最遠大的目標」。只希望我們能在工作中克服各種困難,去實現最長遠的、可持續的目標。

作者:京東物流 馮海豔

來源:京東雲開發者社群 自猿其說Tech