999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Locust 的Web 性能測試工具設計

2024-11-29 00:00:00王永倩賈秀玲
電腦知識與技術 2024年27期

摘要:隨著Web應用的普及和用戶對響應速度要求的不斷提升,確保Web應用在高并發環境下的性能成為開發過程中的關鍵環節。為了更高效地對Web應用進行性能測試,文章設計了一種基于Locust框架的Web性能測試工具,旨在通過分布式架構實現多臺測試機同時施壓,達到真實有效的高并發目的,通過軟件方式解決傳統測試中資源消耗占用率高的問題。文章結合Web開發技術將性能測試結果以可視化圖表進行實時展示,支持關鍵指標圖表聯動,方便用戶進行數據分析。該工具支持HTTP/HTTPS協議的Web應用測試,支持梯形場景設計,同時結合操作系統和中間件的性能監控指標,利用Prometheus和Grafana構建實時監控體系,實現對Web應用服務響應的全方位監控與分析。經過測試,該工具具有良好的可行性和實用性。

關鍵詞:Web應用;Locust;性能測試;可視化圖表;全方位監控

中圖分類號:TP311 文獻標識碼:A

文章編號:1009-3044(2024)27-0008-04

0 引言

軟件作為信息化時代的重要載體,尤其是商業軟件日用戶量巨大,上線之前必須經過性能驗證,否則容易引發服務宕機、軟件崩潰等問題。用戶操作邏輯是用戶與Web應用交互的核心,其合理性和效率直接影響用戶體驗和應用性能[1],因此將性能效率風險貫穿于軟件方案論證、軟件設計研發及軟件產品交付整個過程中具有重要意義。

目前市場上已有很多Web性能測試工具,但使用較多的高并發工具主要有收費的LoadRunner和開源的JMeter。社區版本LoadRunner只能滿足模擬極少數用戶并發,且不能用于商業用途;商業版本Load?Runner能夠模擬大量用戶并發,但工具價格昂貴、操作復雜且可移植性不強[2]。JMeter是一款開源性能測試工具,JMeter通過線程組來驅動多個線程運行測試腳本對被測服務器發起負載[3],可通過修改配置文件實現施壓機級聯,但對用戶來說操作比較煩瑣,測試效率不高。除上述兩種常見工具外,不少企業嘗試自研測試工具,如文獻[4]提出了一種基于FabanPlus工具的Web軟件性能自動化測試方法,但缺少監控手段和可視化展示。本文設計了一種基于Locust框架的Web性能測試工具,該工具通過分布式架構實現高效的并發請求生成與調度,并將測試結果以可視化圖表進行展示。同時結合操作系統和中間件的性能監控指標,利用Prometheus和Grafana構建實時監控體系,可以實現對Web應用服務響應的全方位監控與分析。

1 Locust 簡介

Locust框架是一款使用Python編寫的開源性能測試工具,主要應用在分布式測試、API壓力測試、性能瓶頸識別、負載能力評估以及Web應用性能測試。它以其易用性、可擴展性、實時監控和高度可定制等優勢,目前已經被眾多開發測試人員用于大型系統的復雜壓力測試。隨著云計算和微服務架構的普及,Lo?cust在分布式系統和API性能測試方面的優勢將更加明顯,其在性能測試領域的地位也將進一步提升。Locust相比其他基于進程和線程的測試工具,摒棄了系統級資源調度,采用協程(gevent) 來實現高并發。這使得Locust在單機上能夠產生更高的并發請求數,同時保持較低的資源消耗。其主要特點包括:使用普通Python腳本定義測試場景,具有基于Web的用戶界面以實時監控腳本運行狀態。

2 工具總體架構設計

本設計共有6個功能模塊,其中并發引擎是核心,負責整個軟件的運行調度、數據計算。由并發引擎發起模擬請求,直接向服務器施加壓力,接收服務器返回的響應數據;仿真錄制用于獲取用戶對被測軟件任意操作的快照信息,將請求以腳本的方式傳遞給并發引擎,由并發引擎發起模擬行為;場景設計為高并發測試用戶提供場景設計接口,由用戶確定并發用戶數、啟動模式、持續時長等關鍵場景信息;負載設定用于設置資源信息以及每臺壓測機發起的事務比例。并發引擎獲取負載設定傳入的參數后,根據該參數進行任務調度;數據處理主要能力在于將并發引擎反饋的數據做進一步處理,生成TPS等指標信息,對測試過程數據進行存儲,為性能分析提供基礎數據;可視化顯示部分是基于Web技術研發的數據展示頁面,將指標數據和過程數據以直觀的方式向用戶進行呈現;監控系統主要是通過軟件探針抓取資源使用數據并以圖表的方式展示,該部分支持自定義模板設置。圖1 為工具總體架構圖。

3 工具功能設計

3.1 仿真錄制

仿真錄制是實現用戶行為模擬的重要環節,其核心是對基于HTTP/HTTPS協議的Web應用進行網絡數據監聽。為了實現網絡數據截取,首先要配置proxy網絡代理,并為該代理指定代理端口,使用Fiddler對指定端口上的數據進行捕獲。本設計基于Chrome瀏覽器實現,啟動仿真錄制服務后,fzService服務會接收Fid?dler獲取的數據包,并按照Har標準協議編排。通過仿真錄制服務可以收集用戶在Web應用上的任何行為,包括該行為背后客戶端和服務端之間的請求頭、響應頭、響應體、Cookie、時間戳等所有網絡信息。

本設計基于HTTP/HTTPS 協議進行Web應用錄制。其中HTTP協議采用明文傳輸,可以直接查看報文詳情。HTTPS協議采用雙向加密后,Fiddler以中間人身份獲取報文后,由于沒有密鑰,無法直觀查看報文信息。對于HTTPS協議,由于加密原因并不是完全無法獲知明文,可以在加密通信建立之前,獲取服務器中含有證書的報文,并替換該證書后發送給客戶端。收到客戶端包含密鑰的對稱加密報文后,以服務端公鑰完成加密發送給服務器,如此相當于獲取解密后的服務數據,接下來便可以對相應的報文信息進行保存和修改。

錄制結束生成Har文件后,便可以進行網絡重放,驗證錄制到的網絡信息是否與用戶的操作行為一致。

3.2 負載設定

由于性能驗證在高并發壓力下進行,施壓機對于CPU、內存以及帶寬的需求比較大,因此需要將請求分配到多臺施壓機上,以此來完成壓力測試。將需要的服務包上傳到指定的兩臺施壓機,完成服務安裝,并設定好主從關系。本文將負載的worker(輔助進程)指向負載master(主進程)的IP即可,主從進程通過消息參數完成主從節點間的跨節點通信。當主從機上的任務啟動時,服務會對仿真錄制的Har文件進行解析,進而按照腳本中定義的串行事件進行執行。任務執行時,系統支持權重設置,來調節每個機器上運行的事務數。

3.3 并發場景設計

性能測試聚焦于通過模擬特定場景下的壓力活動,旨在達成預設測試目標。性能測試中的場景設計是實施性能測試的基礎,場景設計一般在錄制腳本完成后進行[5]。并發場景設計以梯形模式、線性模式、震蕩模式最為常見,涉及的主要參數有并發用戶數、login session間隔以及運行總時長。

本設計高并發場景為梯形模式,用戶可根據實際使用需要設置用戶并發量、用戶增長間隔以及運行時長。用戶增長間隔默認為秒,當用戶輸入并發用戶數和用戶增長所需時間后,后臺服務自動計算每秒上線的用戶數。用戶一旦上線完成,按照腳本中的請求順序執行并發任務,模擬用戶運行到設定的執行時間后,自動退出。本設計并發引擎基于Python語言的gevent、requests等庫文件,參數化可通過在相應的請求事務節點,用戶根據場景設計需要以Python代碼方式完成。

在場景設計中,需要對系統的平均并發用戶數進行估值,估值公式如式(1) :

C = nL/T (1)

式中,C 代表平均并發用戶數,n 代表login session 的數量,L 代表login session完成該事務的時長,T 代表運行的總時長。

獲取平均并發量后可以按照該值進行峰值并發量估算,估值公式如式(2) :

式中,峰值并發量用D 來表示。該估值的前提是login session按照泊松分布產生。

對于響應處理能力,通常使用的是TPCC估值,該估值計算的是系統每分鐘處理的請求個數。實際上,該指標也是衡量服務器處理能力的一個重要參照。

該估值體系充分考慮了軟件實際運行中的并發用戶數、用戶訪問模式、軟件處理的事務中各個業務占比、經驗系數以及服務器必須保留的冗余比例。

3.4 并發引擎

本設計并發引擎依賴于Locust框架的gevent庫,該庫提供了豐富的二次開發接口,主要能力在于底層的greenlent微線程機制,按照傳入的參數發起所需協程,協程最大的特點是支持單機高并發量。LoadRun?ner和JMeter使用的是線程機制,線程是操作系統級別的并發執行單元,每個線程擁有自己的執行堆棧和程序計數器,由操作系統內核管理。線程是重量級的執行單元,其創建和切換成本相對較高,因為涉及系統級的上下文切換。協程的切換速度比線程快10倍左右,協程是程序級別的執行單元,運行在線程之上,由程序控制而不是由操作系統內核管理。協程是輕量級的,其創建和切換成本非常低,協程的切換是在用戶級別進行的,不需要系統級的上下文切換。在協程內由代碼控制運行邏輯,因此可控制協程在頻繁I/O 處理時暫停而不至于將線程阻塞。

本設計集成了Python的requests庫以支持HTTP 與HTTPS協議的訪問控制,確保網絡交互的廣泛兼容性和安全性。同時使用pyzmq庫實現服務的分布式部署,允許服務跨越多個機器或進程并發運行。面對高并發請求場景,系統后臺依據用戶定義的主從關系策略,通過pyzmq動態啟動引擎服務,并借助gevent庫的協程機制,在并發腳本中高效地執行HTTP/HTTPS 請求,從而在不增加額外資源開銷的前提下,實現高并發事務處理。

3.5 數據處理

高并發執行過程中會產生大量數據。例如,在萬級并發量的情況下,系統運行中每秒產生的過程數據量是用戶量的幾何倍數。在龐大的數據量下,測試工具采樣頻率和采樣精度直接關系到性能效率結果的正確性。本文對TPS、RPS、平均響應時間等以秒為單位進行數據更新,即對于指標更新,在基于之前采樣數據進行運算的基礎上,一秒后重新運算并更新數據,防止頻繁更新引起緩存以及CPU資源的浪費。對于復雜結構數據,計算精度按照規則做截斷處理,指標項的數據精度只保留到小數點后5位。

高并發過程中產生的數據主要有三種:項目信息、過程數據和報告信息。數據處理模塊對產生的數據進行分析統計,生成需要的指標信息。針對高并發效率驗證的特點,本文對不同的數據采取不同的處理手段。項目信息在項目創建階段將項目ID、項目名稱等在數據庫中進行存儲,腳本信息則以索引的方式與項目進行關聯。高并發過程中產生的動態數據如TPS、平均響應時間等使用Redis進行存儲,項目結束后Redis自動清空。高并發過程中用于單個用戶進行追蹤的數據以及系統運行時產生的日志信息,該種數據的特點是數據量大、內存占用高,但對用戶進行腳本調試、錯誤追蹤、用戶行為分析又必不可少。本設計中將該類數據以文件的方式直接在相應的施壓機進行存儲,避免頻繁進行SQL連接,減少數據庫連接和關閉的次數。通過文件方式查找過程數據在性能測試中相對更加便捷高效。高并發性能效率驗證結束后,最終的TPS、RPS、平均響應時間、最大響應時間、最小響應時間、T50、T90等報告信息,在運行時長結束后,立即執行數據庫操作,并將該數據與項目ID 進行關聯。

3.6 數據監控系統

數據監控系統以Prometheus開源軟件為中心進行結果展示。將操作系統、中間件Kafka、Redis等中間件以及數據庫MySQL相應的pointer探針程序啟動后,在Prometheus 的YAML 文件中進行配置,指向pointer 探針的IP 和端口以及程序名稱。Prometheus 啟動后便可以獲取pointer探針采集到的監控數據,Prometheus將檢測數據發送到Grafana軟件頁面進行數據展示。Grafana具備強大的界面顯示能力,除了基礎的數據展示外,還可供使用者進行二次開發,使用者按照自己的顯示風格進行頁面設計。

3.7 可視化顯示

Locust框架處理后的結果數據以Ajax收發請求的方式反饋給前端頁面,前后端之間通過HTTP、Web?Socket協議實現數據通信。本文前端采用Vue框架,獲取Ajax請求數據后,實現測試結果的圖表和文本信息展示。

4 測試結果分析

為驗證本文設計的Web性能測試工具的功能,以Web學生管理系統為被測對象。Web學生管理系統主要功能涵蓋添加學生信息、修改學生信息、查詢學生信息和刪除學生信息等。服務端部署在Windows10操作系統,處理器為11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz 2.42 GHz,內存16 GB 的機器上。針對該系統共設計三種測試場景:

1) 單用戶按照業務流程操作軟件進行登錄、添加人員、修改人員、查詢人員和刪除人員作業,打開記錄瀏覽器調試頁面,記錄相應執行函數的網絡響應時間,測試結果如表1所示。

2) 腳本調試完成后,將并發用戶數設置為1,按照串行方式執行登錄、添加人員、修改人員、查詢人員和刪除人員事務,并記錄其響應時間,測試結果如表1 所示。

3) 對該學生管理系統進行Web性能測試,模擬100個用戶進行登錄,登錄后每個用戶分別進行多次添加人員、修改人員、查詢人員和刪除人員操作,測試時長為3分鐘,具體事務數和測試結果顯示效果如圖2所示。性能測試結果的可視化展示效果如圖3所示。

根據測試結果可知,單用戶通過瀏覽器進行手工作業完成相應業務的響應時間和通過工具測試完成相應事務的響應時間誤差在2%以內,證明工具模擬測試結果與軟件實際響應完全一致。

在并發狀態下,登錄事務僅并發一次,事務數為100,表示全部用戶登錄成功。登錄事務平均響應時間為99ms、TPS為10.5。由于登錄事務包含軟件初始化請求,服務端執行函數較多,該響應數據符合學生管理系統的軟件架構設計要求和服務器的硬件配置的響應能力。在100用戶并發的情況下,每秒新增人員30.12個,接收速率為209.55kb/s。該事務的接收速率明顯高于其他修改人員、查詢人員和刪除人員事務,是因為該事務包含頁面靜態信息,服務端吞吐壓力因此比其他事務較大。修改人員平均響應時間為35ms,TPS為31.15。該事務是基于新增人員事務基礎上進行的并發壓測,無資源請求接口,因此與增加人員相比,在TPS保持基本不變的情況下,平均響應時間優于增加人員事務。查詢人員事務數、平均響應時間、TPS均低于其他事務,因為在進行并發查詢前,數據庫已經預置50 萬條人員信息,且查詢SQL 為慢SQL,因此該事務響應指標較低,符合軟件實際運行狀態。刪除人員事務平均響應時間為1072ms,該事務響應時長最大是因為該事務包含人員二次確認操作。用戶發起刪除事務后,服務端并未執行刪除程序,而是向用戶發起確認指令,經過用戶二次確認后,才執行刪除事務,因此平均響應時間較大。

并發狀態下,各項事務響應時間明顯高于單用戶狀態,是因為并發狀態下,服務器處理的請求明顯增多,系統處理能力降低。實際測試結果與預期結果一致,證明該并發測試結果有效。

5 結束語

本文設計的Web性能測試工具實現了基于HTTP/HTTPS 協議的Web應用請求錄制,實現腳本編寫自動化,節約腳本開發的時間成本并一定程度規避人工編寫腳本引入的錯誤語句。并基于Locust 的pyzmq庫函數實現施壓機分布式部署和運行,以協程方式發起并發請求,提高單機測試并發量,減少對高性能施壓機的依賴。按照高并發性能驗證需求,將測試結果數據與過程數據分開存儲,方便用戶對異常響應的定位分析。構建以Prometheus為核心,pointer探針為數據源,Grafana為展示面板的數據監控系統,以可視化圖表的方式為用戶提供實時高并發過程信息。經過測試,該工具可以有效收集Web應用的性能數據并進行分析,一定程度上提高了性能測試的執行效率。后續本設計將繼續豐富場景設計模式,增加線性場景、震蕩場景研究開發,并進一步探索請求參數自動化,實現腳本錄制與腳本參數化深度關聯。

參考文獻:

[1] 邵曉峰.Web應用性能優化中的前端加載策略研究[J].信息記錄材料,2024,25(3):35-37.

[2] 趙斯琦,劉如才.Web性能測試工具分析及Gatling改進[J].網絡安全和信息化,2023(3):162-164.

[3] 唐承玲,王虎,李光平,等.基于JMeter的Web性能測試研究[J].電腦與電信,2021(6):65-68,86.

[4] 周健,曹曉龍,吳琦.Web軟件性能參數自動化測試方法設計[J].電子設計工程,2023,31(16):112-115,120.

[5] 李金萌.基于LoadRunner的資產管理系統應用[J].無線互聯科技,2022,19(10):43-46.

【通聯編輯:謝媛媛】

基金項目:2022 年江蘇省教育科學規劃課題(項目編號:B/2022/02/90) ;中國職業技術教育學會第五屆理事會2022 年科研規劃課題(項目編號:ZJ2022A16) ;江蘇省現代教育技術研究課題(項目編號:2021-R-87049)

主站蜘蛛池模板: 福利在线免费视频| 国产精品白浆在线播放| 伊在人亞洲香蕉精品區| 成人国产三级在线播放| 国产产在线精品亚洲aavv| 色一情一乱一伦一区二区三区小说| 国产成人免费视频精品一区二区| 九九视频免费在线观看| 亚洲综合极品香蕉久久网| 99中文字幕亚洲一区二区| 国产爽爽视频| 久久久久亚洲Av片无码观看| 亚洲中久无码永久在线观看软件| 久久99国产综合精品女同| 国产精品九九视频| 日韩国产欧美精品在线| 精品一区二区无码av| 在线观看视频一区二区| 久久久久免费精品国产| 看你懂的巨臀中文字幕一区二区 | 亚洲婷婷六月| av在线5g无码天天| 亚洲一区无码在线| 91视频免费观看网站| 成人一区在线| 亚洲首页在线观看| 天天综合色网| 视频二区国产精品职场同事| 亚洲无码高清免费视频亚洲| 国产乱子伦无码精品小说| 激情无码字幕综合| 91在线视频福利| 日本不卡在线| 亚洲区一区| 亚洲AⅤ无码国产精品| 99无码中文字幕视频| 综合久久五月天| 日韩精品一区二区三区免费| 播五月综合| 久久夜夜视频| 国产欧美视频综合二区| 无码在线激情片| 四虎在线高清无码| 啪啪永久免费av| 欧美一区二区人人喊爽| av免费在线观看美女叉开腿| 白丝美女办公室高潮喷水视频| 日本人又色又爽的视频| 亚洲综合久久成人AV| 国产在线无码一区二区三区| 丝袜无码一区二区三区| 久久亚洲国产视频| 亚洲精品无码日韩国产不卡| 欧美成人精品高清在线下载| 伊人久综合| 国产香蕉在线视频| 日韩一区二区三免费高清| 国产成人在线无码免费视频| 精品视频免费在线| 国产日本欧美亚洲精品视| 亚洲丝袜第一页| 国产精品久久久久鬼色| 91小视频在线观看| 国产欧美日韩在线在线不卡视频| 国产成人精品无码一区二| 国产欧美网站| 日本在线欧美在线| 99在线视频免费观看| 欧美一区中文字幕| 国产九九精品视频| 久久久久国色AV免费观看性色| 日本在线欧美在线| 99这里只有精品在线| 99久久国产精品无码| 日韩国产精品无码一区二区三区| 亚洲中久无码永久在线观看软件 | 少妇精品网站| 人妻夜夜爽天天爽| 国产一级毛片网站| 久久99久久无码毛片一区二区 | 久久国产拍爱| 99这里只有精品免费视频|