大、中型互聯(lián)網(wǎng)企業(yè)該如何進行高并發(fā)壓力測試
在直播、電商、游戲等用戶密集型互聯(lián)網(wǎng)行業(yè),訪問并發(fā)數(shù)通常是非常大的,所以一般會采用產(chǎn)品邏輯優(yōu)化,倒計時延后請求等方式來緩解瞬時的大并發(fā),如銀行系統(tǒng)繁忙提示使...
在直播、電商、游戲等用戶密集型互聯(lián)網(wǎng)行業(yè),訪問并發(fā)數(shù)通常是非常大的,所以一般會采用產(chǎn)品邏輯優(yōu)化,倒計時延后請求等方式來緩解瞬時的大并發(fā),如銀行系統(tǒng)繁忙提示使用其他支付方式,但這樣并不能回避系統(tǒng)本身在壓力下潛藏的性能問題。那么企業(yè)該如何正確發(fā)起高并發(fā),如何知道該架構能支持多大的高并發(fā)呢?

這里需要明確一些概念:并發(fā)用戶、在線用戶和注冊用戶以及彼此之間的換算方法(估算模型)。系統(tǒng)的最大并發(fā)用戶數(shù)根據(jù)注冊用戶數(shù)來獲得,換算方法一般是注冊總人數(shù)的5%-20%之間;系統(tǒng)的并發(fā)數(shù)根據(jù)在線人數(shù)來獲得,換算方法一般是在30%左右;在線用戶數(shù)理解為正在使用系統(tǒng)的用戶數(shù),而注冊用戶數(shù)是系統(tǒng)注冊的人數(shù),這個人數(shù)靜態(tài)的。測試壓力估算時采用如下原則:1、系統(tǒng)在線用戶數(shù)取系統(tǒng)總用戶數(shù)的20%;2、系統(tǒng)在線用戶并發(fā)數(shù)取在線用戶數(shù)的30%;云智慧壓測寶給某個直播用戶做了一次性能壓測服務,達到了將近10萬并發(fā)用戶的要求,如下圖所示:

壓測寶目前已經(jīng)能夠滿足大、中型互聯(lián)網(wǎng)企業(yè)高并發(fā)壓力測試需求,隨著資源的不斷增加,其壓測能力還在迅速提升。云智慧壓測寶特點概覽除了全球分布式云端壓測與應用性能管理產(chǎn)品透視寶深度融合進行問題診斷、支持大規(guī)模并發(fā)之外,壓測寶還有很多特點:[1]天然適應移動互聯(lián)網(wǎng)大多數(shù)互聯(lián)網(wǎng)應用的業(yè)務過程都是通過調用自身或者第三方API來實現(xiàn)的,那么在業(yè)務上線之前,對API及其串接形成的業(yè)務過程進行壓力測試是必不可少的。壓測寶能夠對后端服務的API請求及其調用過程 進行定義及測試,通過對API調用過程的正確性、可用性及響應時間在大規(guī)模壓力條件下以及分布式地域環(huán)境中的質量來評估后端服務保障到位與否。[2]支持Percentile分析Percentile是統(tǒng)計學術語,如果將一組數(shù)據(jù)從小到大排序,并計算相應的累計百分位,則某一百分位所對應數(shù)據(jù)的值就稱為這一百分位的百分位數(shù),可表示為:一組n個觀測值按數(shù)值大小排列,如處于p%位置的值稱第p百分位數(shù)。

實際上在Load Runner中就采用了這樣的統(tǒng)計方法,因為在大數(shù)據(jù)量條件下,數(shù)據(jù)的篩選對分析的準確性尤為重要,壓測寶也使用了這種方法來對事務或者請求進行詳細的響應時間分析,如圖所示,分析事務響應時間時系統(tǒng)默認提供了99%、95%、90%、80%選項,用戶也可以自己定義百分位值。[3]支持多協(xié)議類型的框架壓測寶默認支持的協(xié)議類型為HTTP/HTTPS,能夠滿足主流互聯(lián)網(wǎng)用戶的基本需求,但是某些金融和游戲類用戶采用了特殊的Socket協(xié)議類型,此時如果需要支持的話,就需要在現(xiàn)有框架之上進行擴展,目前提供的框架機制如下圖所示:

壓測寶在整體框架設計上,包括整體的壓測點資源調度、數(shù)據(jù)回傳記統(tǒng)計分析、展現(xiàn)的邏輯使用的是同一套方案,只是在Agent數(shù)據(jù)采集與發(fā)送的時候用不同 plugin來兼容不同socket協(xié)議,因為每家客戶都會有自己的Socket協(xié)議封裝,這種方式確保了系統(tǒng)的整體可擴展性。[4]測試數(shù)據(jù)支持順序和隨機執(zhí)行測試任務時,為測試腳本準備的大量模擬數(shù)據(jù),這些數(shù)據(jù)與腳本中的變量關聯(lián),能夠在某個時段內產(chǎn)生盡量真實的測試結果。在壓測寶中可以方便得通過導入excel文件來創(chuàng)建測試數(shù)據(jù),如下圖所示:

在壓測任務中指定腳本時可以為該腳本綁定測試數(shù)據(jù),同時可以指定測試數(shù)據(jù)的加載模式,包括順序與隨機。當測試數(shù)據(jù)條目數(shù)量大于并發(fā)用戶時選擇順序加載,確保用戶不重復,對某些不允許用戶重復登錄或者提交的場景很有效果。

[5]支持接口正確性判斷除了需要對接口的響應時間和可用性進行判斷之外,還需要對事務或者接口的正確率進行驗證,這里的正確率是指一段時間內,事務正確次數(shù)占事務總次數(shù)的百分比,即事務正確次數(shù)/事務總次數(shù)。事務正確:事務的所有請求都正確才為正確。請求正確:API接口斷言正確則請求正確。在大量并發(fā)的情況下,有時候系統(tǒng)會出現(xiàn)“臟數(shù)據(jù)、錯誤數(shù)據(jù)”的情況——雖然接口可用,但是其返回結果并不是預期的值,所以在壓測的時候有必要對接口返回結果進行檢測,如下圖所示,通過壓測寶腳本配置,可以很方便地進行斷言匹配設定與腳本驗證:


[6]按區(qū)域進行性能分析分布式云端壓測的一個特點是基于云端服務器在一段時間內發(fā)起大量并發(fā),同時也體現(xiàn)了分布式用戶對系統(tǒng)的真實訪問情況,通過按區(qū)域分析,能夠幫助用戶了解不同區(qū)域發(fā)起的用戶量以及每個區(qū)域的訪問性能情況。

云智慧壓測服務模式因為壓測與后端性能分析分析的復雜性,推薦客戶使用云智慧的壓測服務,通過“一站式”性能壓測服務,幫助企業(yè)評估應用性能容量,發(fā)現(xiàn)全鏈路性能瓶頸,從而保障產(chǎn)品交付滿足企業(yè)靈活多變的業(yè)務需求。
云智慧的壓測服務包括:
1、性能檢測:通過系統(tǒng)處理能力(TPS)、響應時間、并發(fā)用戶支持、穩(wěn)定時間等性能指標判斷性能極限;
2、性能診斷:針對壓測請求,對后端代碼、服務器、 數(shù)據(jù)庫和主機性能進行分析診斷,定位性能瓶頸;
3、優(yōu)化建議:針對應用架構、環(huán)境部署、代碼開發(fā)及實施策略提供優(yōu)化建議;
4、容量規(guī)劃:基于壓測數(shù)據(jù)和預測模型與業(yè)務發(fā)展趨勢,提供容量規(guī)劃建議。
云智慧建立了完整的壓測服務體系,由性能測試專家組成服務團隊,依托壓力測試與性能管理平臺為用戶提供標準化壓測服務,實現(xiàn)產(chǎn)品迭代全生命周期的性能持續(xù)改進:
1、需求溝通:進行需求調研和需求確認并完成《壓測需求表》;
2、方案制定:確定壓測場景和壓測目標,溝通確認《壓測方案說明書》;
3、部署實施:根據(jù)壓測方案準備壓測場景與資源,定制壓測任務并在指定時間實施壓測;
4、分析報告:實時跟蹤壓測進程,并對壓測結果進行分析,結合性能管理產(chǎn)品深入解析應用后端性能,完成《性能分析總結報告》并提出問題處理建議;云智慧的服務理念是與用戶一起成長,在過幾年里,云智慧監(jiān)控寶、透視寶伴隨著用戶在不斷進步,相信壓測寶的產(chǎn)品和服務也能為更多的小伙伴提高效率節(jié)約成本,幫助大家加速發(fā)展!