互聯網應用程序壓力測試的那點事


      互聯網應用程序有的一個鮮明特征就是,用戶會大量使用,很多用戶真實使用,很有成就感,不會像傳統企業做的

很多軟件沒人使用,一方面必須保證程序7*24小時正確可用,隨時有問題、bug隨時要處理,另外一方面程序要保證高

性能,性能無論到什么時候都是用戶體驗關鍵要素。要保證這兩點就需要有完備的測試流程體系。

       電商618、雙11大促性能測試更是極其重要,根據預估大促時流量,進行壓測如果性能能夠達到預估值,那么當前

容器、機器資源是可以的,如果達不到就要根據壓力測試情況進行優化、擴容、降級預案等一系列操作。

       非大促平時線上程序測試,一個是單元測試,單元測試一般是程序研發人員自己搞,這個必不可少。一個是業務

邏輯測試,因為當下開發迭代速度非常快,幾天就會優化上線個版本,需要業務人員與開發從兩個角度一起測試業務

邏輯,以確保線上邏輯完全正確。新業務上線前要預估流量,然后根據單機能夠承受流量*容器、機器數量達到預估流

量多一些就可以了。

       互聯網應用特點就是用戶特別多,就會導致會有一些邊界情況測試不到,會導致程序bug或者邏輯不是預期,推薦

系統上的話就是達不到預期點擊、瀏覽、gmv轉化目的。這個就需要線上日志配合查找,但線上日志打得太多又回導致

服務性能差,打太多日志反而很難幫助定位問題,因為太多查找有問題那條找不到。

       對於上邊說的這種情況,我們設計開發了一個日志白名單服務,通過配置管理界面配置用戶信息,當用戶信息與配

置相同時,記錄着個用戶詳細每一步日志,用於快速定位線上問題。對於非白名單用戶不記錄詳細信息。白名單日志平

台支持按屬性、以及全文檢索,能夠方便快速定位線上問題。

       單機或單個容器能夠承受流量是一個很重要數據,因為它*機器數量就是線上最大流量,例如一個服務單機可以處

理1w/m請求量,那么十台機器就可以處理10w/m請求量。這個在618、雙11大促過程中是一個關鍵壓測流程,必不可

少流程。

        對於新應用提前是無法進行單機流量直接通過上面這種摘機器壓測的,我們設計開發了單機壓測工具,專門用於

新機器壓測以及拆機器線上流量達不到線上服務最大量情況。單機壓測工具實現原理是通過多線程,每個線程中循環

調用線上微服務節點,不斷增加量達到線上服務處理最大值,一般是cpu、內存、網絡等使用達到80%,或者jvm中線

程數好幾千,程序性能下降,從而得出單機流量最大值。

       平時時候邏輯測試、以及壓力測試大概就是上邊情況已經基本包括。大促時單機壓力測試與平時沒有差異,差異

在壓力測試就是上下游以及全鏈路壓測。

       上下游壓測與單機壓測是互補關系,上下游壓測可以比較准確模擬實際線上情況。上下游壓測,一般可以用Load

Runner編寫腳本進行多機器壓力測試直到達到線上目標為止,一般腳本要有一定大小用戶pin包,避免用太少pin線上有

緩存達不到壓測目的,再有大促時如果機器資源達不到,上下游可以降一下級再壓測一輪,確保在現有資源下降級是沒

有問題的。

       上下游壓測就需要提前准備,半夜進行壓測,提前不准備會導致程序腳本有些問題,數據有寫問題耽誤壓測進行,

人員眾多浪費大家時間,這是這幾次大促都遇到一個問題吧。

       再有就是現在很火的全鏈路壓測,由最外層cdn復制流量發壓最能准確模擬線上流量情況。可以見直擊雙11京東全鏈路軍演 ForceBot

以及京東全鏈路壓測軍演系統(ForceBot)架構解密詳細解讀全鏈路壓測,這是個大工程,需要中間件、業務系統、網絡

等多個部門組共同實現。

        寫這些文章一個是總結經驗教訓,進行一下復盤,為以后在做相同事時可以拿出來看,再有就是希望對看到文章

朋友,遇到類似問題時有一點幫助吧。

微信搜索:debugme123

        掃描二維碼關注:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM