1. 程式人生 > >在linux上使用Jmeter進行壓力測試

在linux上使用Jmeter進行壓力測試

我們不可能在本地連線遠端的服務資料庫,等來測試服務的抗壓能力,包括網路等一些問題,測試時不準確的,所以要在服務所在的linux伺服器測試壓力

將之前下載的zip包上傳到linux伺服器並配置環境變數

vi /etc/profile
在檔案最後新增以下內容
export JMETER=/usr/local/jmeter
export PATH=${JMETER}/bin/:${PATH}
使環境變數生效
source /etc/profile
使用jmeter -v檢視是否生效。

將在GUI下寫好的請求儲存為測試指令碼

在我們之前的Http請求中加入聚合報告,儲存並將test.jmx檔案上傳至要測試的伺服器,我是將檔案傳到/home/test下

執行以下命令開始測試
jmeter -n -t test.jmx -l test.jtl
-n : 非GUI 模式執行JMeter
-t : 執行測試檔案所在的位置及檔名
-r : 遠端將所有agent啟動用在分散式測試場景下,不是分散式測試只是單點就不需要-r
-l : 指定生成測試結果的儲存檔案, jtl 檔案格式
-e : 測試結束後,生成測試報告
-o : 指定測試報告的存放位置
-o 指定的檔案及資料夾,必須不存在 ,否則執行會失敗,對應上面的命令就是resultReport資料夾必須不存在否則報錯

執行時報如下異常:

Error in NonGUIDriver java.lang.RuntimeException: Could not find the TestPlan class!

解決辦法:


執行完成之後會生成test.jtl檔案,可以將該jtl檔案下載本地,檢視執行結果


也可以檢視測試的聚合報告




上面遺留有一個問題,下載下來的jtl檔案匯入結果樹中,我們並不能看到請求資料和響應資料


jmeter為了減輕客戶機負擔,沒有預設把這些資訊儲存,如果想要儲存,也可以,需要做出如下配置:
修改bin目錄下的user.properties檔案,追加配置:

jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true
效能測試建議還是不要開這些配置,會增加報告的大小

non-gui執行結果GUI檢視,中文亂碼:


JMeter結果樹響應資料中文亂碼解決辦法:
修改bin目錄下的user.properties檔案,追加配置:
jmeter.save.saveservice.encoding=true
另外修改encoding編碼,修改bin目錄下的jmeter.properties檔案,搜尋“sampleresult.default.encoding”關鍵字,找到如下配置:
#The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1
將sampleresult.default.encoding註釋刪掉,並改成utf-8編碼,即:
sampleresult.default.encoding=utf-8