使用Jmeter5.4.1在linux和windows上進行壓測

本文檔旨在教會你安裝jmeter并使用jmeter對你的服務(wù)的http接口進行壓測,獲取相關(guān)壓測數(shù)據(jù)

windows安裝jmeter

安裝jdk

如果你的電腦本來就裝了java那你可以跳過這一步

我們先下載jdk安裝包,這里推薦java8版本
java官方j(luò)dk下載地址
下這個【版本號有區(qū)別沒關(guān)系,反正就是第一個表格里面的windows版本

下下來以后雙擊安裝,我是建議直接下一步下一步安裝到默認位置就好,反正也不大。
現(xiàn)在的java安裝包似乎會幫我們寫環(huán)境變量,所以安裝好以后,反正我是沒有改環(huán)境變量的。

安裝jmeter

先下載
jmeter官方下載地址
下這個

Jmeter其實不需要安裝,把這個壓縮包放到你想要放置的位置,然后解壓縮就好。
解壓后本目錄下會生成一個名為apache-jmeter-5.4.1的文件夾,我們雙擊進入,再進入bin文件夾,雙擊此目錄中的ApacheJMeter.jar或著jmeter.bat都可以打開jmeter【用bat打開會多開啟一個命令行】。
此時我們完成jmeter的安裝。
剛裝好的jmeter默認是英文版的,我這里直接貼出修改語言的菜單路徑,你可以照著這個選項位置找過去改。


Jmeter的使用

Jmeter還有很多強大的功能,此文檔只介紹我自己壓測時會用到的相關(guān)功能,你有興趣的話可以去探索其他功能。

右鍵左上角的測試計劃,選擇 添加-線程-線程組


右鍵剛剛建出來的線程組,選擇 添加-取樣器-HTTP請求


右鍵剛剛建出來的HTTP請求,選擇 添加-監(jiān)聽器-聚合報告


好,準備工作完成,我們來講解一下
先選擇 線程組


我們會看到右邊切換為線程組界面


線程組界面能夠控制壓測的并發(fā)數(shù)和持續(xù)時間,此處的設(shè)置會作用于此線程組下所有的HTTP請求

我們再在左邊選擇HTTP請求
能夠看到,右邊切換為HTTP請求界面


我們?nèi)绻薪涌谛枰蟼魑募?,這時我們需要點擊中間的【文件上傳】頁簽


總而言之,你可以在HTTP請求界面構(gòu)建請求你接口的http請求,就和postman類似。

最后,我們來看聚合報告
在左側(cè)樹中點擊 聚合報告,可以看到右邊切換為聚合報告界面


中文的表頭都很容易理解,我就簡單介紹下就好

字段 含義
#樣本 實際發(fā)起的總請求數(shù)
平均值 所有請求的響應(yīng)時間之和/總請求數(shù)
中位數(shù) 假設(shè)總請求數(shù)為99,將這99次請求按耗時從高到低排列,第50次請求的耗時即為中位數(shù)\n 假設(shè)總請求數(shù)為100,將這100次請求按耗時從高到低排列,第50次和第51次請求的耗時的平均值即為中位數(shù)\n 按下面三項表頭的表達方式,可以將中位數(shù)稱為【50%百分位】
90%百分位 計算方式和中位數(shù)一樣,只不過這項取的是排名第90%的那次請求\n 也可以理解為有90%的請求響應(yīng)時間小于等于這個值
95%百分位 計算方式和中位數(shù)一樣,只不過這項取的是排名第95%的那次請求\n 也可以理解為有95%的請求響應(yīng)時間小于等于這個值
99%百分位 計算方式和中位數(shù)一樣,只不過這項取的是排名第99%的那次請求\n 也可以理解為有99%的請求響應(yīng)時間小于等于這個值
最小值 所有請求中響應(yīng)時間最短的那個時間
最大值 所有請求中響應(yīng)時間最長的那個時間
異常% 對jmeter來說,異常意味著http返回碼不為200,只要接口能調(diào)通,哪怕因為某些原因你的程序返回了報錯,jmeter還是會認為調(diào)用是成功的
吞吐量 我們壓測的核心數(shù)據(jù),可以粗略理解為請求流通的數(shù)據(jù)量。我們壓測的目的是找到吞吐量最高的并發(fā)值

測試接口結(jié)構(gòu)組織
你可以在一個線程組下建立多個http請求,如下圖

你也可以建好幾個線程組,每個線程組下只放一個http請求


怎么樣組織都是可以的,就是注意,調(diào)整并發(fā)數(shù)是在【線程組】界面進行調(diào)整的。我個人會更喜歡用下面那種方式,便于我調(diào)整各接口的并發(fā)數(shù)。

另外有一個要注意的就是,如果你只想要壓測一個接口,一定記得要把別的接口或線程組禁用掉。



如果你已經(jīng)壓測過了,聚合報告中有數(shù)據(jù),此時你要調(diào)整并發(fā)數(shù)再次進行壓測,記得要把聚合報告清空,右鍵聚合報告,選擇清除即可。


制定壓測計劃

我們壓測一般采用控制變量法,同一個接口,相同的參數(shù)【包括文件參數(shù)】,相同的壓測時間,只有并發(fā)線程數(shù)不同。
所以一般接口的參數(shù)設(shè)置好后就不再去動,在【線程組】界面設(shè)置 持續(xù)時間 并設(shè)置好后就不再去動,在壓測的過程中根據(jù)需要調(diào)整【線程組】界面的 線程數(shù) 值。
你可以一次只壓一個接口,也可以同時啟用多個接口一起壓,同時啟用多個接口,且這多個接口分別屬于不同【線程組】的話,你還可以給不同線程組設(shè)置不同的并發(fā)數(shù),以實現(xiàn)【某些接口調(diào)用少,某些接口調(diào)用多】這樣的效果。
具體就以你的實際情況去考慮了。

一般我們建議從一個比較小的并發(fā)開始壓起,比如你服務(wù)器CPU在8核或以下的,建議并發(fā)1、3、5、6、7、8這樣壓上去,當然如果你服務(wù)器配置很好或著服務(wù)性能特別棒那你可以放飛自我一點

壓測的目標是找到并發(fā)線程數(shù)增加但是吞吐量沒有增加的并發(fā)數(shù),如果吞吐量沒有增加就說明服務(wù)壓力已經(jīng)上不去了,總有什么東西到瓶頸了,這個吞吐量最大時的并發(fā)數(shù)就是你的服務(wù)當前的最大并發(fā)數(shù),超過這個數(shù)接著加并發(fā),吞吐量甚至有可能下降。

壓測前的準備

此處給出一個checklist,在你準備開始壓測前,請逐條核對

  1. 檢查要壓測的接口ip、端口、請求類型、接口路徑是否正確,不壓的接口是否禁用
  2. 檢查要壓測的接口參數(shù)【尤其是 內(nèi)容類型 和 對POST使用multipart/form-data】、文件是否正確
  3. 檢查并發(fā)量設(shè)置是否正確
  4. 檢查并發(fā)時間設(shè)置是否正確【可選】
  5. 檢查聚合報告是否清空【可選】
  6. 被壓測服務(wù)是否重啟【可選】
  7. 被壓測服務(wù)運行是否正常
  8. 被壓測服務(wù)所在服務(wù)器上其余服務(wù)是否關(guān)閉干凈

開始壓測

點擊綠色箭頭即可開始壓測,開始后右側(cè)紅框里的stop按鈕會亮起變?yōu)榭牲c狀態(tài),如果你需要停止壓測,可以點擊stop按鈕。
我們壓測一般是設(shè)置相同參數(shù)相同時長,所以壓測時長更多以【線程組】界面的【持續(xù)時間】參數(shù)來控制。

壓測完成后可以去【聚合報告】頁面查看壓測結(jié)果

在Linux上使用jmeter

因為windows有著包括網(wǎng)絡(luò)帶寬、其他程序競爭在內(nèi)的諸多干擾因素,所以我們一般更建議在linux上進行壓測。

安裝jdk

還是這個下載地址
java官方j(luò)dk下載地址
這次要下的是這個

一般的linux都是下的這個,當然你要是別的硬件架構(gòu)你就自己下別的
將jdk-8u291-linux-x64.tar.gz放置到服務(wù)器的/usr/lib目錄下
執(zhí)行tar -zxvf jdk-8u291-linux-x64.tar.gz可進行解壓,解壓后會在當前目錄下生成一個名為jdk1.8.0_291的文件夾,為了以后操作方便我們這里對他重命名一下,執(zhí)行mv ./jdk1.8.0_291 jdk將其重命名為jdk。

然后我們需要修改環(huán)境變量
vim /etc/profile
在最后添上

#set java env
export JAVA_HOME=/usr/lib/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

然后:wq保存即可
執(zhí)行source /etc/profile讓配置立刻生效
可以執(zhí)行java -version看是否能夠正常打印java版本來判斷安裝是否成功

安裝jmeter

安裝文件還是上面叫你下的那個zip,一模一樣,直接拿來用
將apache-jmeter-5.4.1.zip拷入合適位置,哪都行,本文檔以/home目錄為例
執(zhí)行unzip apache-jmeter-5.4.1.zip進行解壓,解壓完成后會在本目錄下生成一個名為jmeter-5.4.1的文件夾
和windows環(huán)境類似,linux環(huán)境的jmeter只要解壓就好不需要安裝

然后我們需要修改環(huán)境變量
vim /etc/profile
在最后添上

export JMETER="/home/jmeter-5.4.1"
export CLASSPATH="$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH"

然后:wq保存即可
執(zhí)行source /etc/profile讓配置立刻生效

開始壓測

建議在windows的jmeter先設(shè)置好你要壓測的所有配置項,包括并發(fā)數(shù)和接口、接口參數(shù)等等【注意如果有文件的話文件路徑在linux上會發(fā)生變化,所以文件路徑在windows上先不改】,記得把你不壓的接口禁用掉,然后點擊頂部 文件-保存測試計劃 即可將你的測試計劃保存在文件中


如圖所示會保存成一個jmx文件,文件名你可以自己起,保存位置也隨意

保存好后將這個jmx文件拷入壓測服務(wù)器,最好是拷入/home/jmeter-5.4.1/bin目錄,這也是待會啟動jmeter的程序所在的目錄,然后將你要作為參數(shù)的文件也拷入同一目錄,使用vim編輯這個jmx文件,在里面找到你之前設(shè)置為文件參數(shù)的文件路徑【windows環(huán)境的路徑很容易認,就D:之類的有個盤符開頭】把他改成linux環(huán)境的文件路徑,剛才叫你把文件和jmx放在相同目錄,此時你就可以直接寫./文件名這樣,不用寫太多字。改好以后:wq保存。
此時我們就可以開始壓測了,在/home/jmeter-5.4.1/bin執(zhí)行

java -jar ApacheJMeter.jar -n -t test.jmx  -l test.jtl

jmeter就會開始跑,并且會自動在當前目錄生成一個jtl文件【你命令里文件名可以改不是非要test.jtl】將測試結(jié)果寫入,跑完會打印end of run,此時我們要將這個jtl文件從服務(wù)器上拷出來,到windows版jmeter上,打開【聚合報告】界面,點擊瀏覽


選擇我們剛才從服務(wù)器上拷出的jtl文件,就能夠看到我們在服務(wù)器上進行壓測的結(jié)果了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容