性能測(cè)試-jmeter簡(jiǎn)單實(shí)例

上一節(jié)中瓢棒,我們了解了jmeter的一此主要元件祷膳,那么這些元件如何使用到性能測(cè)試中呢。這一節(jié)創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試計(jì)劃來使用這些元件乃戈。該計(jì)劃對(duì)應(yīng)的測(cè)試需求褂痰。

1)測(cè)試目標(biāo)網(wǎng)站是fnng.cnblogs.com 和 tt-topia.rhcloud.com

2)測(cè)試目的是該網(wǎng)站在負(fù)載達(dá)到20 QPS 時(shí)的響應(yīng)時(shí)間。

QPS 解釋

QPS : Query Per Second 每秒查詢率症虑。是一臺(tái)查詢服務(wù)器每秒能夠處理的查詢次數(shù)缩歪。在因特網(wǎng)上,作為域名系統(tǒng)服務(wù)器的機(jī)器的性能經(jīng)常用每秒查詢率來衡量谍憔。

為了達(dá)成預(yù)期的測(cè)目的匪蝙,需要需要在jmeter中建立一個(gè)測(cè)試計(jì)劃。因?yàn)楸敬螠y(cè)試僅要求完成對(duì)fnng.cnblogs.com 和 tt-topia.rhcloud.com 兩個(gè)博客首頁請(qǐng)求习贫,因此只需要使用HTTP Request Sampler 即可逛球。

建立測(cè)試計(jì)劃

啟動(dòng)jmeter后,jmeter會(huì)自動(dòng)生成一個(gè)空的測(cè)試計(jì)劃苫昌,用戶可以基于該測(cè)試計(jì)劃建立自己的測(cè)試計(jì)劃颤绕。

添加線程組

一個(gè)性能測(cè)試請(qǐng)求負(fù)載是基于一個(gè)線程組完成的。一個(gè)測(cè)試計(jì)劃必須有一個(gè)線程組。測(cè)試計(jì)劃添加線程組非常簡(jiǎn)單奥务。在測(cè)試計(jì)劃右鍵彈出下拉菜單(添加-->Threads(Users)--->線程組)中選擇線程組即可涕烧。

jmeter中 每個(gè)測(cè)試計(jì)劃至少需要包含一個(gè)線程組,當(dāng)然也可以在一個(gè)計(jì)劃中創(chuàng)建多個(gè)線程組汗洒,那么多個(gè)線程組之間又會(huì)怎樣的順序執(zhí)行(串行還是并行)?在測(cè)試計(jì)劃下面多個(gè)線程是并行執(zhí)行的,也就是說這些線程組是同時(shí)被初始化并同時(shí)執(zhí)行線程組下的Sampler的父款。


線程組主要包含三個(gè)參數(shù):線程數(shù)溢谤、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))、循環(huán)次數(shù)憨攒。

線程數(shù):虛擬用戶數(shù)世杀。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程。設(shè)置多少虛擬用戶數(shù)在這里也就是設(shè)置多少個(gè)線程數(shù)肝集。

準(zhǔn)備時(shí)長(zhǎng): 設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)瞻坝。如果線程數(shù)為20 ,準(zhǔn)備時(shí)長(zhǎng)為10 杏瞻,那么需要10秒鐘啟動(dòng)20個(gè)線程所刀。也就是每秒鐘啟動(dòng)2個(gè)線程。

循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的次數(shù)捞挥。如果線程數(shù)為20 浮创,循環(huán)次數(shù)為100 ,那么每個(gè)線程發(fā)送100次請(qǐng)求砌函≌杜總請(qǐng)求數(shù)為20*100=2000 。如果勾選了“永遠(yuǎn)”讹俊,那么所有線程會(huì)一直發(fā)送請(qǐng)求垦沉,一到選擇停止運(yùn)行腳本。

設(shè)置合理的線程數(shù)對(duì)于能否達(dá)到測(cè)試目標(biāo)有決定性的影響仍劈。在本例中厕倍,要求得到網(wǎng)站首頁在20 QPS 負(fù)載情況下的響應(yīng)時(shí)間,如果如果線程數(shù)量設(shè)置的過小耳奕,則很可能無法達(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)求

添加完成線程組后邪乍,在線程組上右鍵菜單(添加--->Sampler--->HTTP請(qǐng)求)選擇HTTP請(qǐng)求。對(duì)于jmeter來說,取樣器(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ì)介紹:

名稱:本屬性用于標(biāo)識(shí)一個(gè)取樣器,建議使用一個(gè)有意義的名稱吕晌。

注釋:對(duì)于測(cè)試沒有任何作用蛋褥,僅用戶記錄用戶可讀的注釋信息。

服務(wù)器名稱或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或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)重定向到新的頁面。

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ù)化的方法。用戶可以將URL中所有參數(shù)設(shè)置在本表中消略,表中的每一行是一個(gè)參數(shù)值對(duì)(對(duì)應(yīng)RUL中的 名稱1=值1)堡称。

同請(qǐng)求一起發(fā)送文件:在請(qǐng)求中發(fā)送文件,通常艺演,HTTP文件上傳行為可以通過這種方式模擬却紧。

從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)不選中,如果用戶只希望獲取頁面中的特定資源巫俺,可以在下方的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ù)的開銷柱彻。

在這里我們添加兩個(gè)HTTP請(qǐng)求豪娜,分別用于對(duì)fnng.cnblogs.com 和 tt-topia.rhcloud.com發(fā)送請(qǐng)求。

設(shè)置QPS限制

本次性能測(cè)試的需求中提到測(cè)試的目的是“了解博客的首頁在負(fù)載達(dá)到20 QPS時(shí)的響應(yīng)時(shí)間”哟楷,因此需要控制向博客首頁發(fā)送請(qǐng)求的負(fù)載為20QPS瘤载。

一種可行的方法是逐步調(diào)整測(cè)試計(jì)劃中的線程計(jì)算的數(shù)量以及為取樣器(Sampler)添加定時(shí)器(Timer),以使HTTP取樣器發(fā)出的請(qǐng)求的QPS保持在20個(gè)左右卖擅。但這種方法耗時(shí)耗力鸣奔,需要經(jīng)過多次嘗試才能達(dá)到;另一方法,完全通過設(shè)置定時(shí)器來控制QPS惩阶,一旦取樣器的響應(yīng)時(shí)間發(fā)生改變(網(wǎng)絡(luò)環(huán)境發(fā)生改變)挎狸,就需要重新調(diào)整定時(shí)器的等待時(shí)間。

Jmeter提供了一個(gè)非常有用的定時(shí)器断楷,稱為Constant Throughput Timer (常數(shù)吞吐量定時(shí)器)锨匆,該定時(shí)器可以方便地控制給定的取樣器發(fā)送請(qǐng)求的吞吐量。

右鍵點(diǎn)擊fnng.cnblogs.com 冬筒,彈出菜單(添加--->定時(shí)器--->Constant Throughput Timer)選擇Constant Throughput Timer


Constant Throughput Timer 的主要屬性介紹:

名稱 :定時(shí)器的名稱

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è)線程的吞吐量鞭衩,選擇這種模式時(shí)学搜,總的吞吐量為設(shè)置的 target Throughput 乘以矣線程的數(shù)量。

All active threads : 設(shè)置的target Throughput 將分配在每個(gè)活躍線程上论衍,每個(gè)活躍線程在上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行瑞佩。活躍線程指同一時(shí)刻同時(shí)運(yùn)行的線程坯台。

All active threads in current thread group :設(shè)置的target Throughput將分配在當(dāng)前線程組的每一個(gè)活躍線程上炬丸,當(dāng)測(cè)試計(jì)劃中只有一個(gè)線程組時(shí),該選項(xiàng)和All active threads選項(xiàng)的效果完全相同蜒蕾。

All active threads (shared ):與All active threads 的選項(xiàng)基本相同稠炬,唯一的區(qū)別是,每個(gè)活躍線程都會(huì)在所有活躍線程上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行咪啡。

All cative threads in current thread group (shared ):與All active threads in current thread group 基本相同首启,唯一的區(qū)別是,每個(gè)活躍線程都會(huì)在所有活躍線程的上一次運(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只有在線程組中的線程產(chǎn)生足夠多的request 的情況下才有意義衫嵌,因此读宙,即使設(shè)置了Constant Throughput Timer的值,也可能由于線程組中的線程數(shù)量不夠楔绞,或是定時(shí)器設(shè)置不合理等原因?qū)е驴傮w的QPS不能達(dá)到預(yù)期目標(biāo)结闸。

添加監(jiān)聽器(Listener)

腳本的主要部分設(shè)置完成后,需要通過某種方式獲得性能測(cè)試中的測(cè)試結(jié)果酒朵,在本例中膀估,我們關(guān)心的是請(qǐng)求的響應(yīng)時(shí)間。

Jmeter 中使用監(jiān)聽器元件收集取樣器記錄的數(shù)據(jù)并以可視化的方式來呈現(xiàn)耻讽。Jmeter有各種不同的監(jiān)聽器類型察纯,因?yàn)樯螲TTP請(qǐng)求,我們可在添加聚合報(bào)告针肥,更為直觀的查看測(cè)試結(jié)果饼记。

添加聚合報(bào)告,右鍵點(diǎn)擊線程組慰枕,在彈的菜單(添加--->監(jiān)聽器--->聚合報(bào)告)中選擇聚合報(bào)告具则。


運(yùn)行腳本

添加完成聚合報(bào)告后,我們來運(yùn)行腳本具帮,稍后介紹聚合報(bào)告的參數(shù)博肋。

在運(yùn)腳本之前低斋,我們來查看一下,各個(gè)元件的參數(shù)設(shè)置:

---------------------------------------------------------------

線程組:

線程數(shù):20

準(zhǔn)備時(shí)長(zhǎng): 10

循環(huán)次數(shù):10

---------------------------------------------------------------

HTTP請(qǐng)求:

名稱:fnng.cnblogs.com匪凡。

服務(wù)器名稱或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 來運(yùn)行程序。

聚合報(bào)告分析

查看聚合報(bào)告的運(yùn)行結(jié)果如上圖病游。

針對(duì)各個(gè)字段的意義:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唇跨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衬衬,更是在濱河造成了極大的恐慌买猖,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滋尉,死亡現(xiàn)場(chǎng)離奇詭異玉控,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)狮惜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門高诺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讽挟,你說我怎么就攤上這事⊥杳幔” “怎么了耽梅?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)胖烛。 經(jīng)常有香客問我眼姐,道長(zhǎng),這世上最難降的妖魔是什么佩番? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任众旗,我火速辦了婚禮,結(jié)果婚禮上趟畏,老公的妹妹穿的比我還像新娘贡歧。我一直安慰自己,他們只是感情好赋秀,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布利朵。 她就那樣靜靜地躺著,像睡著了一般猎莲。 火紅的嫁衣襯著肌膚如雪绍弟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天著洼,我揣著相機(jī)與錄音樟遣,去河邊找鬼而叼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛豹悬,可吹牛的內(nèi)容都是我干的葵陵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼屿衅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼埃难!你這毒婦竟也來了鉴扫?” 一聲冷哼從身側(cè)響起谒拴,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤聋呢,失蹤者是張志新(化名)和其女友劉穎旁舰,沒想到半個(gè)月后冒掌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體热监,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡展姐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年沐绒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔗彤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片川梅。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖然遏,靈堂內(nèi)的尸體忽然破棺而出贫途,到底是詐尸還是另有隱情,我是刑警寧澤待侵,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布丢早,位于F島的核電站,受9級(jí)特大地震影響秧倾,放射性物質(zhì)發(fā)生泄漏怨酝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一那先、第九天 我趴在偏房一處隱蔽的房頂上張望农猬。 院中可真熱鬧,春花似錦售淡、人聲如沸斤葱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苦掘。三九已至,卻和暖如春楔壤,著一層夾襖步出監(jiān)牢的瞬間鹤啡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工蹲嚣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留递瑰,地道東北人祟牲。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抖部,于是被迫代替她去往敵國和親说贝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1 Jmeter安裝配置 使用Jmeter前首先要安裝JDK慎颗,配置JDK環(huán)境變量乡恕。Jmeter不需要安裝,下載后...
    茶小汐閱讀 2,921評(píng)論 0 8
  • 在使用Jmeter進(jìn)行接口的性能測(cè)試時(shí)俯萎,由于Jmeter 是JAVA應(yīng)用傲宜,對(duì)于CPU和內(nèi)存的消耗比較大,所以夫啊,當(dāng)需...
    燕京博士閱讀 4,159評(píng)論 0 16
  • 互聯(lián)網(wǎng)壓力性能Badboy.Jmeterhttp://itopic.org/jmeter-http-tcp.htm...
    燕京博士閱讀 2,884評(píng)論 0 20
  • 線程組主要包含三個(gè)參數(shù):線程數(shù)函卒、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))、循環(huán)次數(shù)撇眯。 線程...
    古佛青燈度流年閱讀 1,904評(píng)論 0 2
  • 《高堡奇人》 文:Recycler 32/118,1725字 歡迎新朋友报嵌,給老朋友請(qǐng)安。 《高堡奇人》一句話透漏劇...
    Recycler閱讀 5,916評(píng)論 0 3