[TOC]
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、網(wǎng)站制作、李滄網(wǎng)絡(luò)推廣、成都微信小程序、李滄網(wǎng)絡(luò)營銷、李滄企業(yè)策劃、李滄品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供李滄建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:m.rwnh.cn
Jmeter是Apache開源的一個使用純Java編寫的壓力測試工具,它最初是為測試web應(yīng)用程序而設(shè)計的,但后來擴展到了其他測試功能。例如,可用于測試靜態(tài)和動態(tài)資源以及web動態(tài)應(yīng)用程序的性能等。Jmeter可以用來模擬對服務(wù)器、服務(wù)器組、網(wǎng)絡(luò)或?qū)ο笊系闹刎?fù)載,以測試其強度或分析服務(wù)在不同負(fù)載類型下的總體性能。
如今Jmeter是一個主流的、功能完善且強大的壓測工具,由于是使用Java編寫的,所以具有跨平臺特性,可以運行在Windows、Mac、Linux等操作系統(tǒng)上。并且支持豐富的協(xié)議,如:HTTP/HTTPS、FTP、JDBC、SOCKET、SOAP。。。等,此外還有許多第三方插件支持以及第三方集成
相關(guān)網(wǎng)址:
通過以上給出的地址將Jmeter下載好后,進入到Jmeter的bin目錄下,啟動腳本放在這個目錄,其中windows雙擊jmeter.bat即可,Mac和Linux下則是使用如下命令運行:
sudo sh {JMETER_HOME}/bin/jmeter.sh
初次運行可能會比較慢,啟動成功后,界面如下:
接下來我們看看如何使用Jmeter對接口進行壓測,我現(xiàn)在有一個商品列表接口,接口路徑為:/goods/to_list
。
想要使用Jmeter對這個接口進行壓測的話,首先右擊左邊欄的“Test Plan”(測試計劃),添加一個“Thread Group”(線程組),如下圖所示:
接著簡單配置一下請求線程數(shù)之類的,線程數(shù)就代表著并發(fā)數(shù):
因為該接口是通過HTTP請求的,所以需要添加一個HTTP請求默認(rèn)值,如下圖:
配置接口服務(wù)的請求協(xié)議、ip地址以及端口號,這樣后面添加HTTP請求的時候就不需要重復(fù)填寫這些信息了,可以起到一個通用配置的作用:
然后添加一個HTTP請求:
這里只需要配置接口路徑以及請求方法即可,因為Jmeter會自動幫我們拼上之前配置的HTTP請求默認(rèn)值:
為了查看測試結(jié)果,還需要添加一些監(jiān)聽器,監(jiān)聽器有很多種,也可以添加多個,這里我添加了一個聚合報告:
以及一個圖形結(jié)果:
在上一小節(jié)中,介紹了如何針對一個現(xiàn)有的接口配置測試計劃,按照以上步驟配置完成后如下:
現(xiàn)在我們就可以開始執(zhí)行這個測試計劃了:
測試運行完成后,可以在聚合報告中看到壓測的統(tǒng)計數(shù)據(jù):
簡單說明下這些統(tǒng)計指標(biāo):
如果此時查看圖形結(jié)構(gòu)的話,會發(fā)現(xiàn)只有一點點線條,這是因為我們將線程組的線程數(shù)設(shè)置太小了:
可以嘗試將線程數(shù)設(shè)置到1000,然后清除之前的測試報告數(shù)據(jù):
然后再運行這個測試計劃,運行完成后再打開圖形結(jié)果就可以看到曲線圖了,如下:
以上小節(jié)介紹了Jmeter的基本使用,但都是基于可視化界面操作的。在某些情況下我們可能需要在服務(wù)器上進行測試,而絕大多數(shù)服務(wù)器系統(tǒng)都只有命令行。好在Jmeter支持命令行下的操作,所以本小節(jié)將介紹在命令行下如何使用Jmeter做壓測。
首先第一步是在當(dāng)前的操作系統(tǒng)下在可視化界面上配置好測試計劃并將其存儲為jmx文件,在這一步我們直接將之前所演示的測試計劃另存為jmx文件即可?!癴ile” -> “Save Test Plan as”:
第二步是將這個jmx文件上傳到服務(wù)器上,我這里的操作系統(tǒng)是Mac OS,所以使用scp
進行上傳:
scp MyWorkSpace/TestFiles/goods_list.jmx root@${server_ip}:/home/goods_list.jmx
rz
命令,直接選擇上傳的文件即可。上傳完成后,使用Jmeter的shell腳本jmeter.sh
執(zhí)行該jmx文件:
[root@server ~]# cd /usr/local/apache-jmeter-5.1.1/bin/
[root@server /usr/local/apache-jmeter-5.1.1/bin]# ./jmeter.sh -n -t /home/goods_list.jmx -l /home/result.jtl
參數(shù)說明:
執(zhí)行該測試計劃后,想要知道壓測是否正常進行的話,可以使用top
命令查看系統(tǒng)負(fù)載。我這里很明顯是正常執(zhí)行壓測了,CPU負(fù)載達到了19.72
:
執(zhí)行結(jié)束后會輸出一些測試結(jié)果的統(tǒng)計信息:
正常情況下執(zhí)行結(jié)束會生成一個測試結(jié)果文件,存放在我們使用參數(shù)-l
指定的路徑下。如下:
最后把生成的result.jtl
文件下載到本地,并導(dǎo)入到Jmeter中?!癆ggregate Report” -> “Browser” -> “Open”:
此時就可以看到測試結(jié)果的聚合報告了:
上面兩小節(jié)我們簡單介紹了Jmeter的基本使用,而本小節(jié)則將介紹一個在Jmeter中很實用的功能:自定義變量。有過一些測試經(jīng)驗的小伙伴應(yīng)該知道在很多接口的測試用例下,我們可能需要模擬多個用戶對某一接口進行請求,這時候通過使用Jmeter里的自定義變量就能實現(xiàn)這個功能。當(dāng)然自定義變量不僅僅是用來模擬多用戶,這里只是舉一個實際的應(yīng)用例子。
在一個線程組里可以添加多個HTTP請求,如果希望一次只測試一個接口的話,可以將其他測試請求給禁用掉。例如這里將之前所添加的“商品列表”給禁用,右擊“商品列表”選擇“Disable”:
現(xiàn)在我有一個可以通過token獲取用戶信息的接口:/user/info
,該接口需要接收一個參數(shù),即用戶的登錄token。根據(jù)該接口添加一個新的HTTP請求,具體配置如下:
按照如此配置,每次請求傳遞的都是同一個token,這樣就只能針對一個用戶進行測試。若要模擬多用戶,自然不能將token寫死在這里,而是將其抽取成一個變量,這也就是所謂的自定義變量了。在Jmeter中自定義變量,首先需要添加一個“CSV Data Set Config”。如下圖所示:
然后創(chuàng)建一個配置文件,配置文件的內(nèi)容是有一定格式的,需要使用分隔符分隔,分隔符可以是任意的可識別符號,例如我這里使用逗號進行分隔:
$ cat config.txt
13000000001,149787a6b7986f31b3dcc0e4e857cd2a
13000000002,078563f337ec6d6fedf131ddc857db19
13000000003,7692dcdc19e41e66c6ae2de54a696b25
13000000004,0f3e84acb19dff22f695f31dbe3e972a
13000000005,268e27056a3e52cf3755d193cbeb0594
13000000006,00c66aaf5f2c3f49946f15c1ad2ea0d3
接著根據(jù)配置文件和實際需求編輯如下選項,讓Jmeter可以從配置文件中讀取配置項:
在使用的時候,通過${變量名}
引用自定義變量即可,如下示例:
這樣Jmeter就會從配置文件中讀取不同的token并賦值給我們定義好的變量,那么每次請求就可以傳遞不同的token,以達到模擬多個用戶請求的效果。
在上一小節(jié)中我們介紹過命令行下的壓測方式,但如果我們配置的測試計劃用到了自定義變量, 且定義了配置文件的路徑。而服務(wù)器上的文件路徑肯定和本地操作系統(tǒng)的文件路徑不一樣,那么要如何更改配置文件的路徑呢?
首先將jmx文件和配置文件一并上傳到服務(wù)器上,接著打開jmx文件并查找到CSVDataSet
標(biāo)簽,然后將描述配置文件路徑的子標(biāo)簽的值改為服務(wù)器上配置文件所在的正確路徑即可。如下圖所示:
Redis作為緩存中間件,其性能瓶頸會影響到系統(tǒng)的整體性能,所以通常我們也需要通過壓測的方式確定Redis服務(wù)的性能瓶頸是多少。而Redis自帶了壓測工具:redis-benchmark
,本小節(jié)將簡單介紹該工具的使用。
該工具的使用也比較簡單,如果只是做一個壓測的話,只需要使用如下命令即可:
[root@server ~]# redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000
參數(shù)說明:
執(zhí)行該命令后,控制臺會輸出相應(yīng)的壓測結(jié)果。觀察輸出的信息會發(fā)現(xiàn),該命令會逐個對redis的一些主要指令進行壓測,我這里就截取了get
指令的壓測結(jié)果。如下:
====== GET ======
# 10w個請求在1.58秒內(nèi)執(zhí)行完畢
100000 requests completed in 1.58 seconds
# 100個并發(fā)客戶端
100 parallel clients
# 每個請求數(shù)據(jù)包大小為3字節(jié)
3 bytes payload
keep alive: 1
# 48.00%的請求耗時小于等于1毫秒
48.00% <= 1 milliseconds
# 99.66%的請求耗時小于等于2毫秒
99.66% <= 2 milliseconds
# 100%的請求耗時小于等于2毫秒
100.00% <= 2 milliseconds
# 每秒可完成63411.54個請求,即QPS
63411.54 requests per second
如果希望壓測時指定每個請求的數(shù)據(jù)包大小可參考如下命令:
[root@server ~]# redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100
參數(shù)說明:
如果只想壓測指定的命令,則可以使用-t
參數(shù)來指定,如下示例:
[root@server ~]# redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -q -n 100000
如果想壓測某條具體的指令,那么則可以使用script load
來指定腳本。如下示例:
[root@server ~]# redis-benchmark -h 127.0.0.1 -p 6379 -q -n 100000 script load "redis.call('set', 'foo', 'bar')"
文章名稱:Jmeter接口壓測快速入門
網(wǎng)站路徑:http://m.rwnh.cn/article34/gdiope.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、企業(yè)建站、用戶體驗、定制開發(fā)、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)