国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Locust 的Web 性能測(cè)試工具設(shè)計(jì)

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

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

關(guān)鍵詞:Web應(yīng)用;Locust;性能測(cè)試;可視化圖表;全方位監(jiān)控

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A

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

0 引言

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

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

1 Locust 簡(jiǎn)介

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

2 工具總體架構(gòu)設(shè)計(jì)

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

3 工具功能設(shè)計(jì)

3.1 仿真錄制

仿真錄制是實(shí)現(xiàn)用戶行為模擬的重要環(huán)節(jié),其核心是對(duì)基于HTTP/HTTPS協(xié)議的Web應(yīng)用進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)監(jiān)聽。為了實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)截取,首先要配置proxy網(wǎng)絡(luò)代理,并為該代理指定代理端口,使用Fiddler對(duì)指定端口上的數(shù)據(jù)進(jìn)行捕獲。本設(shè)計(jì)基于Chrome瀏覽器實(shí)現(xiàn),啟動(dòng)仿真錄制服務(wù)后,fzService服務(wù)會(huì)接收Fid?dler獲取的數(shù)據(jù)包,并按照Har標(biāo)準(zhǔn)協(xié)議編排。通過仿真錄制服務(wù)可以收集用戶在Web應(yīng)用上的任何行為,包括該行為背后客戶端和服務(wù)端之間的請(qǐng)求頭、響應(yīng)頭、響應(yīng)體、Cookie、時(shí)間戳等所有網(wǎng)絡(luò)信息。

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

錄制結(jié)束生成Har文件后,便可以進(jìn)行網(wǎng)絡(luò)重放,驗(yàn)證錄制到的網(wǎng)絡(luò)信息是否與用戶的操作行為一致。

3.2 負(fù)載設(shè)定

由于性能驗(yàn)證在高并發(fā)壓力下進(jìn)行,施壓機(jī)對(duì)于CPU、內(nèi)存以及帶寬的需求比較大,因此需要將請(qǐng)求分配到多臺(tái)施壓機(jī)上,以此來完成壓力測(cè)試。將需要的服務(wù)包上傳到指定的兩臺(tái)施壓機(jī),完成服務(wù)安裝,并設(shè)定好主從關(guān)系。本文將負(fù)載的worker(輔助進(jìn)程)指向負(fù)載master(主進(jìn)程)的IP即可,主從進(jìn)程通過消息參數(shù)完成主從節(jié)點(diǎn)間的跨節(jié)點(diǎn)通信。當(dāng)主從機(jī)上的任務(wù)啟動(dòng)時(shí),服務(wù)會(huì)對(duì)仿真錄制的Har文件進(jìn)行解析,進(jìn)而按照腳本中定義的串行事件進(jìn)行執(zhí)行。任務(wù)執(zhí)行時(shí),系統(tǒng)支持權(quán)重設(shè)置,來調(diào)節(jié)每個(gè)機(jī)器上運(yùn)行的事務(wù)數(shù)。

3.3 并發(fā)場(chǎng)景設(shè)計(jì)

性能測(cè)試聚焦于通過模擬特定場(chǎng)景下的壓力活動(dòng),旨在達(dá)成預(yù)設(shè)測(cè)試目標(biāo)。性能測(cè)試中的場(chǎng)景設(shè)計(jì)是實(shí)施性能測(cè)試的基礎(chǔ),場(chǎng)景設(shè)計(jì)一般在錄制腳本完成后進(jìn)行[5]。并發(fā)場(chǎng)景設(shè)計(jì)以梯形模式、線性模式、震蕩模式最為常見,涉及的主要參數(shù)有并發(fā)用戶數(shù)、login session間隔以及運(yùn)行總時(shí)長(zhǎng)。

本設(shè)計(jì)高并發(fā)場(chǎng)景為梯形模式,用戶可根據(jù)實(shí)際使用需要設(shè)置用戶并發(fā)量、用戶增長(zhǎng)間隔以及運(yùn)行時(shí)長(zhǎng)。用戶增長(zhǎng)間隔默認(rèn)為秒,當(dāng)用戶輸入并發(fā)用戶數(shù)和用戶增長(zhǎng)所需時(shí)間后,后臺(tái)服務(wù)自動(dòng)計(jì)算每秒上線的用戶數(shù)。用戶一旦上線完成,按照腳本中的請(qǐng)求順序執(zhí)行并發(fā)任務(wù),模擬用戶運(yùn)行到設(shè)定的執(zhí)行時(shí)間后,自動(dòng)退出。本設(shè)計(jì)并發(fā)引擎基于Python語言的gevent、requests等庫文件,參數(shù)化可通過在相應(yīng)的請(qǐng)求事務(wù)節(jié)點(diǎn),用戶根據(jù)場(chǎng)景設(shè)計(jì)需要以Python代碼方式完成。

在場(chǎng)景設(shè)計(jì)中,需要對(duì)系統(tǒng)的平均并發(fā)用戶數(shù)進(jìn)行估值,估值公式如式(1) :

C = nL/T (1)

式中,C 代表平均并發(fā)用戶數(shù),n 代表login session 的數(shù)量,L 代表login session完成該事務(wù)的時(shí)長(zhǎng),T 代表運(yùn)行的總時(shí)長(zhǎng)。

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

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

對(duì)于響應(yīng)處理能力,通常使用的是TPCC估值,該估值計(jì)算的是系統(tǒng)每分鐘處理的請(qǐng)求個(gè)數(shù)。實(shí)際上,該指標(biāo)也是衡量服務(wù)器處理能力的一個(gè)重要參照。

該估值體系充分考慮了軟件實(shí)際運(yùn)行中的并發(fā)用戶數(shù)、用戶訪問模式、軟件處理的事務(wù)中各個(gè)業(yè)務(wù)占比、經(jīng)驗(yàn)系數(shù)以及服務(wù)器必須保留的冗余比例。

3.4 并發(fā)引擎

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

本設(shè)計(jì)集成了Python的requests庫以支持HTTP 與HTTPS協(xié)議的訪問控制,確保網(wǎng)絡(luò)交互的廣泛兼容性和安全性。同時(shí)使用pyzmq庫實(shí)現(xiàn)服務(wù)的分布式部署,允許服務(wù)跨越多個(gè)機(jī)器或進(jìn)程并發(fā)運(yùn)行。面對(duì)高并發(fā)請(qǐng)求場(chǎng)景,系統(tǒng)后臺(tái)依據(jù)用戶定義的主從關(guān)系策略,通過pyzmq動(dòng)態(tài)啟動(dòng)引擎服務(wù),并借助gevent庫的協(xié)程機(jī)制,在并發(fā)腳本中高效地執(zhí)行HTTP/HTTPS 請(qǐng)求,從而在不增加額外資源開銷的前提下,實(shí)現(xiàn)高并發(fā)事務(wù)處理。

3.5 數(shù)據(jù)處理

高并發(fā)執(zhí)行過程中會(huì)產(chǎn)生大量數(shù)據(jù)。例如,在萬級(jí)并發(fā)量的情況下,系統(tǒng)運(yùn)行中每秒產(chǎn)生的過程數(shù)據(jù)量是用戶量的幾何倍數(shù)。在龐大的數(shù)據(jù)量下,測(cè)試工具采樣頻率和采樣精度直接關(guān)系到性能效率結(jié)果的正確性。本文對(duì)TPS、RPS、平均響應(yīng)時(shí)間等以秒為單位進(jìn)行數(shù)據(jù)更新,即對(duì)于指標(biāo)更新,在基于之前采樣數(shù)據(jù)進(jìn)行運(yùn)算的基礎(chǔ)上,一秒后重新運(yùn)算并更新數(shù)據(jù),防止頻繁更新引起緩存以及CPU資源的浪費(fèi)。對(duì)于復(fù)雜結(jié)構(gòu)數(shù)據(jù),計(jì)算精度按照規(guī)則做截?cái)嗵幚?,指?biāo)項(xiàng)的數(shù)據(jù)精度只保留到小數(shù)點(diǎn)后5位。

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

3.6 數(shù)據(jù)監(jiān)控系統(tǒng)

數(shù)據(jù)監(jiān)控系統(tǒng)以Prometheus開源軟件為中心進(jìn)行結(jié)果展示。將操作系統(tǒng)、中間件Kafka、Redis等中間件以及數(shù)據(jù)庫MySQL相應(yīng)的pointer探針程序啟動(dòng)后,在Prometheus 的YAML 文件中進(jìn)行配置,指向pointer 探針的IP 和端口以及程序名稱。Prometheus 啟動(dòng)后便可以獲取pointer探針采集到的監(jiān)控?cái)?shù)據(jù),Prometheus將檢測(cè)數(shù)據(jù)發(fā)送到Grafana軟件頁面進(jìn)行數(shù)據(jù)展示。Grafana具備強(qiáng)大的界面顯示能力,除了基礎(chǔ)的數(shù)據(jù)展示外,還可供使用者進(jìn)行二次開發(fā),使用者按照自己的顯示風(fēng)格進(jìn)行頁面設(shè)計(jì)。

3.7 可視化顯示

Locust框架處理后的結(jié)果數(shù)據(jù)以Ajax收發(fā)請(qǐng)求的方式反饋給前端頁面,前后端之間通過HTTP、Web?Socket協(xié)議實(shí)現(xiàn)數(shù)據(jù)通信。本文前端采用Vue框架,獲取Ajax請(qǐng)求數(shù)據(jù)后,實(shí)現(xiàn)測(cè)試結(jié)果的圖表和文本信息展示。

4 測(cè)試結(jié)果分析

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

1) 單用戶按照業(yè)務(wù)流程操作軟件進(jìn)行登錄、添加人員、修改人員、查詢?nèi)藛T和刪除人員作業(yè),打開記錄瀏覽器調(diào)試頁面,記錄相應(yīng)執(zhí)行函數(shù)的網(wǎng)絡(luò)響應(yīng)時(shí)間,測(cè)試結(jié)果如表1所示。

2) 腳本調(diào)試完成后,將并發(fā)用戶數(shù)設(shè)置為1,按照串行方式執(zhí)行登錄、添加人員、修改人員、查詢?nèi)藛T和刪除人員事務(wù),并記錄其響應(yīng)時(shí)間,測(cè)試結(jié)果如表1 所示。

3) 對(duì)該學(xué)生管理系統(tǒng)進(jìn)行Web性能測(cè)試,模擬100個(gè)用戶進(jìn)行登錄,登錄后每個(gè)用戶分別進(jìn)行多次添加人員、修改人員、查詢?nèi)藛T和刪除人員操作,測(cè)試時(shí)長(zhǎng)為3分鐘,具體事務(wù)數(shù)和測(cè)試結(jié)果顯示效果如圖2所示。性能測(cè)試結(jié)果的可視化展示效果如圖3所示。

根據(jù)測(cè)試結(jié)果可知,單用戶通過瀏覽器進(jìn)行手工作業(yè)完成相應(yīng)業(yè)務(wù)的響應(yīng)時(shí)間和通過工具測(cè)試完成相應(yīng)事務(wù)的響應(yīng)時(shí)間誤差在2%以內(nèi),證明工具模擬測(cè)試結(jié)果與軟件實(shí)際響應(yīng)完全一致。

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

并發(fā)狀態(tài)下,各項(xiàng)事務(wù)響應(yīng)時(shí)間明顯高于單用戶狀態(tài),是因?yàn)椴l(fā)狀態(tài)下,服務(wù)器處理的請(qǐng)求明顯增多,系統(tǒng)處理能力降低。實(shí)際測(cè)試結(jié)果與預(yù)期結(jié)果一致,證明該并發(fā)測(cè)試結(jié)果有效。

5 結(jié)束語

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

參考文獻(xiàn):

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

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

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

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

[5] 李金萌.基于LoadRunner的資產(chǎn)管理系統(tǒng)應(yīng)用[J].無線互聯(lián)科技,2022,19(10):43-46.

【通聯(lián)編輯:謝媛媛】

基金項(xiàng)目:2022 年江蘇省教育科學(xué)規(guī)劃課題(項(xiàng)目編號(hào):B/2022/02/90) ;中國(guó)職業(yè)技術(shù)教育學(xué)會(huì)第五屆理事會(huì)2022 年科研規(guī)劃課題(項(xiàng)目編號(hào):ZJ2022A16) ;江蘇省現(xiàn)代教育技術(shù)研究課題(項(xiàng)目編號(hào):2021-R-87049)

五华县| 巴林左旗| 兴仁县| 宁波市| 石屏县| 皋兰县| 兴宁市| 绩溪县| 定兴县| 怀集县| 青铜峡市| 水富县| 日土县| 固镇县| 雅江县| 阜平县| 临安市| 安阳县| 麻栗坡县| 陆良县| 拉孜县| 酒泉市| 普兰店市| 江永县| 谷城县| 莱西市| 浠水县| 衡阳市| 舟山市| 泽普县| 蒲江县| 来安县| 锡林郭勒盟| 永修县| 石屏县| 侯马市| 大悟县| 咸阳市| 万山特区| 武清区| 丰宁|