當(dāng)你想做性能測試的時(shí)候

? ? ? ? 當(dāng)你想做性能測試的時(shí)候,你會(huì)選擇什么樣的測試工具呢舔涎?是會(huì)選擇wrk笼踩?jmeter?locust亡嫌?還是loadrunner呢嚎于?

? ? ? 今天,筆者將根據(jù)自己使用經(jīng)驗(yàn)挟冠,針對jmeter于购、locust、wrk和loadrunner常用的性能測試工具進(jìn)行簡單介紹和對比知染。首先肋僧,附上網(wǎng)友總結(jié)的四者基本對比圖:

jmeter、locust、wrk嫌吠、loadrunner對比圖

由于loadrunner為商業(yè)收費(fèi)模式止潘,對于公司級測試使用而言涉及到授權(quán)問題,因此辫诅,本文暫不對loadrunner進(jìn)行詳細(xì)討論凭戴。

1、wrk

? ? ? wrk是輕量化的http性能測試工具炕矮,采用線程+網(wǎng)絡(luò)異步IO模型么夫,網(wǎng)絡(luò)異步IO可以使得系統(tǒng)使用很少的線程模擬大量的網(wǎng)絡(luò)連接以增大并發(fā)量、提高壓力肤视。

wrk操作簡單档痪、易于使用,使用方式例如:./wrk -c 1000 -t 8 -d 10s http://www.baidu.com钢颂。主要包括以下參數(shù):

-t(--thread) 需要模擬的線程數(shù)钞它;-c(connection) 需要模擬的連接數(shù)拜银;--timeout 超時(shí)的時(shí)間殊鞭;-d(--duration) 測試的持續(xù)時(shí)間

其中:

①參數(shù)-c(connection,線鏈接數(shù))與操作系統(tǒng)文件句柄數(shù)相關(guān)尼桶,-c不能超過文件句柄數(shù)設(shè)置操灿,開始測試前應(yīng)保證系統(tǒng)可用端口數(shù)大于-c設(shè)置;

②參數(shù)-t(--thread泵督,線程數(shù))與操作系統(tǒng)cpu核數(shù)有關(guān)趾盐,-t不宜設(shè)置過大,過大的線程數(shù)設(shè)置反而會(huì)因線程調(diào)度反而使性能降低小腊。如下圖所示救鲤,操作系統(tǒng)為8核cpu:相同連接數(shù)和測試時(shí)長條件下,不同線程數(shù)對同一系統(tǒng)REST接口測試秩冈,從測試結(jié)果可以看出當(dāng)thread=8(與cpu核數(shù)一致)時(shí)系統(tǒng)性能測試結(jié)果最佳本缠,性能波動(dòng)最小入问;

8核cpu:相同連接數(shù)和測試時(shí)長條件下丹锹,不同線程數(shù)對同一系統(tǒng)REST接口測試結(jié)果對比圖

其他說明:

①wrk只支持http協(xié)議類型請求(如get、post等)芬失,但若是需要執(zhí)行g(shù)et之外的http類型請求需要使用者自行編寫lua腳本楣黍;

②只允許單機(jī)測試,不支持多機(jī)分布式壓力測試棱烂,因此wrk適合性能基準(zhǔn)測試租漂,對于模擬上萬的用戶并發(fā)測試顯得有點(diǎn)力不從心;

③測試結(jié)果簡單,無詳細(xì)圖表解析窜锯,舉例如下张肾;

wrk測試結(jié)果輸出

2、jmeter

? ? ? jmeter同樣采用線程并發(fā)機(jī)制锚扎,但其主要依靠增加線程數(shù)提高并發(fā)量吞瞪,當(dāng)單機(jī)模擬數(shù)以千計(jì)的并發(fā)用戶時(shí),對于CPU和內(nèi)存的消耗比較大驾孔。與上述wrk相比芍秆,jmeter本身具有以下優(yōu)點(diǎn)和缺點(diǎn):

優(yōu)點(diǎn)如下:

①界面可視化操作,可以使用錄制腳本方式對較為復(fù)雜的用戶流建模翠勉,還可以創(chuàng)建斷言來驗(yàn)證測試行為是否通過妖啥;

②表格、圖形对碌、結(jié)果樹等多類可視化數(shù)據(jù)分析和報(bào)告輸出荆虱,舉例如下;

jmeter聚合報(bào)告及表格查看結(jié)果

③支持http朽们、ftp怀读、tcp等多種協(xié)議類型測試;

④支持分布式壓力測試骑脱,但對于上萬的用戶并發(fā)測試需要多臺測試機(jī)支持菜枷,資源要求比較大;

⑤可以用于測試固定吞吐量下的系統(tǒng)性能叁丧,例如在100QPS(QPS:每秒查詢率)下系統(tǒng)的響應(yīng)時(shí)間和資源消耗啤誊;

缺點(diǎn):

jmeter的GUI模式消耗資源較大,當(dāng)需要測試高負(fù)載時(shí)拥娄,需要先使用GUI工具來生成XML測試計(jì)劃蚊锹,然后在非GUI模式下導(dǎo)入測試計(jì)劃運(yùn)行測試,并且關(guān)閉不需要的偵聽器(收集數(shù)據(jù)與展示測量的組件)稚瘾,因?yàn)閭陕犉饕矔?huì)消耗掉本用于生成負(fù)載的大量資源牡昆。測試結(jié)束后后,需要將原始結(jié)果數(shù)據(jù)導(dǎo)入GUI以才能查看結(jié)果孟抗。

3迁杨、locust

? ? ? locust是一個(gè)的簡單易用的分布式負(fù)載測試工具,主要用來對網(wǎng)站進(jìn)行負(fù)載壓力測試凄硼。locust使用python語言開發(fā)铅协,測試資源消耗遠(yuǎn)遠(yuǎn)小于java語言開發(fā)的jmeter。且其支持分布式部署測試摊沉,能夠輕松模擬百萬級用戶并發(fā)測試狐史。

? ? ? ? 與jmeter和wrk相比,locust具有以下優(yōu)缺點(diǎn):

優(yōu)點(diǎn):

①不同與wrk和jmeter使用線程數(shù)提高并發(fā)量,locust借助于協(xié)程實(shí)現(xiàn)對用戶的模擬骏全,相同物理資源(機(jī)器cpu苍柏、內(nèi)存等)配置下locust能支持的并發(fā)用戶數(shù)相比jmeter可以提升一個(gè)數(shù)量級;

②相比wrk對復(fù)雜場景測試的捉襟見肘和jmeter需要界面點(diǎn)擊錄制復(fù)雜場景的麻煩姜贡,locust只需用戶使用python編寫用戶場景完成測試试吁;

③不同與jmeter復(fù)雜的用戶使用界面,locust的界面干凈整潔楼咳,可以實(shí)時(shí)顯示測試的相關(guān)細(xì)節(jié)(如發(fā)送請求數(shù)熄捍、失敗數(shù)和當(dāng)前發(fā)送請求速度等);

④locust雖然是面向web應(yīng)用測試的母怜,但是它可以用來測試幾乎所有系統(tǒng)余耽。給locust編寫一個(gè)客戶端,可以滿足你所有的測試要求苹熏;

缺點(diǎn):

同wrk一樣碟贾,locust測試結(jié)果輸出不如jmeter的測試結(jié)果展示類型多;

locust測試結(jié)果

4轨域、總結(jié)

? ? ? 本文簡單介紹和對比了wrk袱耽、jmeter及l(fā)ocust三種性能測試工具,希望能給大家?guī)砘A(chǔ)的認(rèn)識疙挺。此外讓我們最后一起來看看面臨以下測試需求扛邑,我們應(yīng)該如何在三者中進(jìn)行選擇:

①我想使用界面操作的形式對我的系統(tǒng)做性能測試怜浅,并且希望我的測試數(shù)據(jù)有個(gè)良好的可視化展示方式铐然;

——建議使用jmeter工具

②我想要對我系統(tǒng)的http rest接口進(jìn)行性能測試,但是我之前沒有進(jìn)行過任何測試恶座,我不知道我的系統(tǒng)QPS是個(gè)什么樣的水平搀暑;

——建議使用wrk工具

③我想對我的系統(tǒng)模擬用戶操作進(jìn)行復(fù)雜場景的性能測試;

——建議使用locust工具

④我想測試我的系統(tǒng)在一定QPS情況下跨琳,一段時(shí)間內(nèi)的性能指標(biāo)(cpu消耗自点、內(nèi)存消耗等);

——建議使用jmeter工具

⑤我想使用勻速請求的方式脉让,對我的系統(tǒng)進(jìn)行性能測試桂敛;

——建議使用jmeter或locust工具

⑥我想體驗(yàn)編程的樂趣,自己編寫腳本進(jìn)行性能測試溅潜;

——http請求:wrk术唬,使用lua語言編寫腳本;

——locust滚澜,使用python語言編寫腳本粗仓;

——或者,just do it by yourself,自己選擇編程語言編寫性能測試腳本借浊。~.~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末塘淑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蚂斤,更是在濱河造成了極大的恐慌存捺,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曙蒸,死亡現(xiàn)場離奇詭異召噩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)逸爵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門具滴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人师倔,你說我怎么就攤上這事构韵。” “怎么了趋艘?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵疲恢,是天一觀的道長。 經(jīng)常有香客問我瓷胧,道長显拳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任搓萧,我火速辦了婚禮杂数,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瘸洛。我一直安慰自己揍移,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布反肋。 她就那樣靜靜地躺著那伐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪石蔗。 梳的紋絲不亂的頭發(fā)上罕邀,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機(jī)與錄音养距,去河邊找鬼诉探。 笑死,一個(gè)胖子當(dāng)著我的面吹牛铃在,可吹牛的內(nèi)容都是我干的阵具。 我是一名探鬼主播碍遍,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阳液!你這毒婦竟也來了怕敬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤帘皿,失蹤者是張志新(化名)和其女友劉穎东跪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹰溜,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虽填,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了曹动。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斋日。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖墓陈,靈堂內(nèi)的尸體忽然破棺而出恶守,到底是詐尸還是另有隱情,我是刑警寧澤贡必,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布兔港,位于F島的核電站,受9級特大地震影響仔拟,放射性物質(zhì)發(fā)生泄漏衫樊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一利花、第九天 我趴在偏房一處隱蔽的房頂上張望科侈。 院中可真熱鬧,春花似錦晋被、人聲如沸兑徘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至藕漱,卻和暖如春欲侮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肋联。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工威蕉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人橄仍。 一個(gè)月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓韧涨,卻偏偏與公主長得像牍戚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子虑粥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

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