jmeter聚个报告怎么看qps_【jmeter】jmeter测试网站QPS
上一節(jié)中,我們了解了jmeter的一此主要元件,那么這些元件如何使用到性能測(cè)試中呢。這一節(jié)創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試計(jì)劃來(lái)使用這些元件。該計(jì)劃對(duì)應(yīng)的測(cè)試需求。
1)測(cè)試目標(biāo)網(wǎng)站是fnng.cnblogs.com
2)測(cè)試目的是該網(wǎng)站在負(fù)載達(dá)到20?QPS?時(shí)的響應(yīng)時(shí)間。
QPS?解釋
QPS :?Query?Per?Second?每秒查詢(xún)率。是一臺(tái)查詢(xún)服務(wù)器每秒能夠處理的查詢(xún)次數(shù)。在因特網(wǎng)上,作為域名系統(tǒng)服務(wù)器的機(jī)器的性能經(jīng)常用每秒查詢(xún)率來(lái)衡量。
為了達(dá)成預(yù)期的測(cè)目的,需要需要在jmeter中建立一個(gè)測(cè)試計(jì)劃。因?yàn)楸敬螠y(cè)試僅要求完成對(duì)fnng.cnblogs.com博客首頁(yè)請(qǐng)求,因此只需要使用HTTP?Request?Sampler?即可。
建立測(cè)試計(jì)劃
啟動(dòng)jmeter后,jmeter會(huì)自動(dòng)生成一個(gè)空的測(cè)試計(jì)劃,用戶(hù)可以基于該測(cè)試計(jì)劃建立自己的測(cè)試計(jì)劃。
添加線(xiàn)程組
一個(gè)性能測(cè)試請(qǐng)求負(fù)載是基于一個(gè)線(xiàn)程組完成的。一個(gè)測(cè)試計(jì)劃必須有一個(gè)線(xiàn)程組。測(cè)試計(jì)劃添加線(xiàn)程組非常簡(jiǎn)單。在測(cè)試計(jì)劃右鍵彈出下拉菜單(添加-->Threads(Users)--->線(xiàn)程組)中選擇線(xiàn)程組即可。
jmeter中?每個(gè)測(cè)試計(jì)劃至少需要包含一個(gè)線(xiàn)程組,當(dāng)然也可以在一個(gè)計(jì)劃中創(chuàng)建多個(gè)線(xiàn)程組,那么多個(gè)線(xiàn)程組之間又會(huì)怎樣的順序執(zhí)行(串行還是并行)?在測(cè)試計(jì)劃下面多個(gè)線(xiàn)程是并行執(zhí)行的,也就是說(shuō)這些線(xiàn)程組是同時(shí)被初始化并同時(shí)執(zhí)行線(xiàn)程組下的Sampler的。
線(xiàn)程組主要包含三個(gè)參數(shù):線(xiàn)程數(shù)、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up?Period(in?seconds))、循環(huán)次數(shù)。
線(xiàn)程數(shù):虛擬用戶(hù)數(shù)。一個(gè)虛擬用戶(hù)占用一個(gè)進(jìn)程或線(xiàn)程。設(shè)置多少虛擬用戶(hù)數(shù)在這里也就是設(shè)置多少個(gè)線(xiàn)程數(shù)。
準(zhǔn)備時(shí)長(zhǎng):?設(shè)置的虛擬用戶(hù)數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)。如果線(xiàn)程數(shù)為20?,準(zhǔn)備時(shí)長(zhǎng)為10?,那么需要10秒鐘啟動(dòng)20個(gè)線(xiàn)程。也就是每秒鐘啟動(dòng)2個(gè)線(xiàn)程。
循環(huán)次數(shù):每個(gè)線(xiàn)程發(fā)送請(qǐng)求的次數(shù)。如果線(xiàn)程數(shù)為20?,循環(huán)次數(shù)為100?,那么每個(gè)線(xiàn)程發(fā)送100次請(qǐng)求。總請(qǐng)求數(shù)為20*100=2000?。如果勾選了“永遠(yuǎn)”,那么所有線(xiàn)程會(huì)一直發(fā)送請(qǐng)求,一到選擇停止運(yùn)行腳本。
設(shè)置合理的線(xiàn)程數(shù)對(duì)于能否達(dá)到測(cè)試目標(biāo)有決定性的影 響。在本例中,要求得到網(wǎng)站首頁(yè)在20?QPS?負(fù)載情況下的響應(yīng)時(shí)間,如果如果線(xiàn)程數(shù)量設(shè)置的過(guò)小,則很可能無(wú)法達(dá)到設(shè)定的QPS要求。另外,設(shè)置合理 的循環(huán)次數(shù)也很重要,除了上面介紹的固定循環(huán)次數(shù)與永遠(yuǎn)外;也可以靈活的選擇設(shè)定測(cè)試運(yùn)行時(shí)間。勾選“調(diào)度器”,進(jìn)行調(diào)度器配置。
添加HTTP請(qǐng)求
添加完成線(xiàn)程組后,在線(xiàn)程組上右鍵菜單(添加--->Sampler--->HTTP請(qǐng)求)選擇HTTP請(qǐng)求。對(duì)于jmeter來(lái)說(shuō),取樣器(Sampler)是與服務(wù)器進(jìn)行交互的單元。一個(gè)取樣器通常進(jìn)行三部分的工作:
向服務(wù)器發(fā)送請(qǐng)求
記錄服務(wù)器的響應(yīng)數(shù)據(jù)
記錄相應(yīng)時(shí)間信息
一個(gè)HTTP請(qǐng)求有著許多的配置參數(shù),下面將詳細(xì)介紹:
名稱(chēng):本屬性用于標(biāo)識(shí)一個(gè)取樣器,建議使用一個(gè)有意義的名稱(chēng)。
注釋:對(duì)于測(cè)試沒(méi)有任何作用,僅用戶(hù)記錄用戶(hù)可讀的注釋信息。
服務(wù)器名稱(chēng)或IP?:HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱(chēng)或IP地址。
端口號(hào):目標(biāo)服務(wù)器的端口號(hào),默認(rèn)值為80?。
協(xié)議:向目標(biāo)服務(wù)器發(fā)送HTTP請(qǐng)求時(shí)的協(xié)議,可以是http或者是https?,默認(rèn)值為http?。
方法:發(fā)送HTTP請(qǐng)求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
Content?encoding?:內(nèi)容的編碼方式,默認(rèn)值為iso8859
路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口)
自動(dòng)重定向:如果選中該選項(xiàng),當(dāng)發(fā)送HTTP請(qǐng)求后得到的響應(yīng)是302/301時(shí),JMeter?自動(dòng)重定向到新的頁(yè)面。
Use?keep?Alive?:?當(dāng)該選項(xiàng)被選中時(shí),jmeter?和目標(biāo)服務(wù)器之間使用?Keep-Alive方式進(jìn)行HTTP通信,默認(rèn)選中。
Use?multipart/from-data?for?HTTP?POST?:當(dāng)發(fā)送HTTP?POST?請(qǐng)求時(shí),使用Use?multipart/from-data方法發(fā)送,默認(rèn)不選中。
同請(qǐng)求一起發(fā)送參數(shù)?:?在請(qǐng)求中發(fā)送URL參數(shù),對(duì)于帶參數(shù)的URL?,jmeter提供了一個(gè)簡(jiǎn)單的對(duì)參數(shù)化的方法。用戶(hù)可以將URL中所有參數(shù)設(shè)置在本表中,表中的每一行是一個(gè)參數(shù)值對(duì)(對(duì)應(yīng)RUL中的?名稱(chēng)1=值1)。
同請(qǐng)求一起發(fā)送文件:在請(qǐng)求中發(fā)送文件,通常,HTTP文件上傳行為可以通過(guò)這種方式模擬。
從HTML文件獲取所有有內(nèi)含的資源: 當(dāng)該選項(xiàng)被選中時(shí),jmeter在發(fā)出HTTP請(qǐng)求并獲得響應(yīng)的HTML文件內(nèi)容后,還對(duì)該HTML進(jìn)行Parse?并獲取HTML中包含的所有資源(圖 片、flash等),默認(rèn)不選中,如果用戶(hù)只希望獲取頁(yè)面中的特定資源,可以在下方的Embedded?URLs?must?match?文本框中填入需 要下載的特定資源表達(dá)式,這樣,只有能匹配指定正則表達(dá)式的URL指向資源會(huì)被下載。
用作監(jiān)視器:此取樣器被當(dāng)成監(jiān)視器,在Monitor?Results?Listener?中可以直接看到基于該取樣器的圖形化統(tǒng)計(jì)信息。默認(rèn)為不選中。
Save?response?as?MD5?hash??:選中該項(xiàng),在執(zhí)行時(shí)僅記錄服務(wù)端響應(yīng)數(shù)據(jù)的MD5值,而不記錄完整的響應(yīng)數(shù)據(jù)。在需要進(jìn)行數(shù)據(jù)量非常大的測(cè)試時(shí),建議選中該項(xiàng)以減少取樣器記錄響應(yīng)數(shù)據(jù)的開(kāi)銷(xiāo)。
在這里我們添加兩個(gè)HTTP請(qǐng)求,分別用于對(duì)fnng.cnblogs.com發(fā)送請(qǐng)求。
設(shè)置QPS限制
本次性能測(cè)試的需求中提到測(cè)試的目的是“了解博客的首頁(yè)在負(fù)載達(dá)到20?QPS時(shí)的響應(yīng)時(shí)間”,因此需要控制向博客首頁(yè)發(fā)送請(qǐng)求的負(fù)載為20QPS。
一種可行的方法是逐步調(diào)整測(cè)試計(jì)劃中的線(xiàn)程計(jì)算的數(shù)量 以及為取樣器(Sampler)添加定時(shí)器(Timer),以使HTTP取樣器發(fā)出的請(qǐng)求的QPS保持在20個(gè)左右。但這種方法耗時(shí)耗力,需要經(jīng)過(guò)多次嘗 試才能達(dá)到;另一方法,完全通過(guò)設(shè)置定時(shí)器來(lái)控制QPS,一旦取樣器的響應(yīng)時(shí)間發(fā)生改變(網(wǎng)絡(luò)環(huán)境發(fā)生改變),就需要重新調(diào)整定時(shí)器的等待時(shí)間。
Jmeter提供了一個(gè)非常有用的定時(shí)器,稱(chēng)為Constant?Throughput?Timer?(常數(shù)吞吐量定時(shí)器),該定時(shí)器可以方便地控制給定的取樣器發(fā)送請(qǐng)求的吞吐量。
右鍵點(diǎn)擊fnng.cnblogs.com?,彈出菜單(添加--->定時(shí)器--->Constant?Throughput?Timer)選擇Constant?Throughput?Timer
Constant?Throughput?Timer?的主要屬性介紹:
名稱(chēng)?:定時(shí)器的名稱(chēng)
Target?throughput(in?samples?per?minute):目標(biāo)吞吐量。注意這里是每分鐘發(fā)送的請(qǐng)求數(shù),因此,對(duì)應(yīng)測(cè)試需求中所要求的20?QPS?,這里的值應(yīng)該是1200?。
Calculate?Throughput?based?on:有5個(gè)選項(xiàng),分別是:
This?thread?only?:控制每個(gè)線(xiàn)程的吞吐量,選擇這種模式時(shí),總的吞吐量為設(shè)置的?target?Throughput?乘以矣線(xiàn)程的數(shù)量。
All?active?threads?:?設(shè)置的target?Throughput?將分配在每個(gè)活躍線(xiàn)程上,每個(gè)活躍線(xiàn)程在上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。活躍線(xiàn)程指同一時(shí)刻同時(shí)運(yùn)行的線(xiàn)程。
All?active?threads?in?current?thread?group?:設(shè)置的target?Throughput將分配在當(dāng)前線(xiàn)程 組的每一個(gè)活躍線(xiàn)程上,當(dāng)測(cè)試計(jì)劃中只有一個(gè)線(xiàn)程組時(shí),該選項(xiàng)和All?active?threads選項(xiàng)的效果完全相同。
All?active?threads?(shared?):與All?active?threads?的選項(xiàng)基本相同,唯一的區(qū)別是,每個(gè)活躍線(xiàn)程都會(huì)在所有活躍線(xiàn)程上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。
All?cative?threads?in?current?thread?group?(shared?):與 All?active?threads?in?current?thread?group?基本相同,唯一的區(qū)別是,每個(gè)活躍線(xiàn)程都會(huì)在所有活躍線(xiàn)程的上 一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。
如上圖,該元件僅作用于fnng.cnblogs.com?,設(shè)置定時(shí)器的Target?throughput為1200/分鐘(20?QPS),設(shè)置Calculate?Throughput?based?on?的值為All?active?threads?。
當(dāng) 然,Constant?Throughput?Timer只有在線(xiàn)程組中的線(xiàn)程產(chǎn)生足夠多的request?的情況下才有意義,因此,即使設(shè)置了 Constant?Throughput?Timer的值,也可能由于線(xiàn)程組中的線(xiàn)程數(shù)量不夠,或是定時(shí)器設(shè)置不合理等原因?qū)е驴傮w的QPS不能達(dá)到預(yù)期 目標(biāo)。
添加監(jiān)聽(tīng)器(Listener)
腳本的主要部分設(shè)置完成后,需要通過(guò)某種方式獲得性能測(cè)試中的測(cè)試結(jié)果,在本例中,我們關(guān)心的是請(qǐng)求的響應(yīng)時(shí)間。
Jmeter?中使用監(jiān)聽(tīng)器元件收集取樣器記錄的數(shù)據(jù)并以可視化的方式來(lái)呈現(xiàn)。Jmeter有各種不同的監(jiān)聽(tīng)器類(lèi)型,因?yàn)樯螲TTP請(qǐng)求,我們可在添加聚合報(bào)告,更為直觀(guān)的查看測(cè)試結(jié)果。
添加聚合報(bào)告,右鍵點(diǎn)擊線(xiàn)程組,在彈的菜單(添加--->監(jiān)聽(tīng)器--->聚合報(bào)告)中選擇聚合報(bào)告。
運(yùn)行腳本
添加完成聚合報(bào)告后,我們來(lái)運(yùn)行腳本,稍后介紹聚合報(bào)告的參數(shù)。
在運(yùn)腳本之前,我們來(lái)查看一下,各個(gè)元件的參數(shù)設(shè)置:
---------------------------------------------------------------
線(xiàn)程組:
線(xiàn)程數(shù):20
準(zhǔn)備時(shí)長(zhǎng):?10
循環(huán)次數(shù):10
---------------------------------------------------------------
HTTP請(qǐng)求:
名稱(chēng):fnng.cnblogs.com。
服務(wù)器名稱(chēng)或IP?:fnng.cnblogs.com
端口號(hào):80
Implementation?:?java
協(xié)議:?http
方法:?GET
路徑:/
---------------------------------------------------------------
常數(shù)吞吐量定時(shí)器:
Target?throughput(in?samples?per?minute):1200.0
Calculate?Throughput?based?on?:All?active?threads
---------------------------------------------------------------
點(diǎn)擊工具欄上的運(yùn)行按鈕,或者點(diǎn)擊菜單欄“?運(yùn)行--->啟動(dòng)?”?或者使用快捷鍵ctrl+r?來(lái)運(yùn)行程序。
聚合報(bào)告分析
查看聚合報(bào)告的運(yùn)行結(jié)果:
OK!?到此一次完整的性能測(cè)試結(jié)束,如果你從中有所收獲,推薦一記~!
總結(jié)
以上是生活随笔為你收集整理的jmeter聚个报告怎么看qps_【jmeter】jmeter测试网站QPS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 最经典的大数据案例解析(附代码)
- 下一篇: linux 火狐无法执行二进制文件_尝试