在linux上使用Jmeter進行壓力測試
阿新 • • 發佈:2019-02-12
我們不可能在本地連線遠端的服務資料庫,等來測試服務的抗壓能力,包括網路等一些問題,測試時不準確的,所以要在服務所在的linux伺服器測試壓力
執行以下命令開始測試
-t : 執行測試檔案所在的位置及檔名
-r : 遠端將所有agent啟動用在分散式測試場景下,不是分散式測試只是單點就不需要-r
-l : 指定生成測試結果的儲存檔案, jtl 檔案格式
-e : 測試結束後,生成測試報告
-o : 指定測試報告的存放位置
-o 指定的檔案及資料夾,必須不存在 ,否則執行會失敗,對應上面的命令就是resultReport資料夾必須不存在否則報錯
解決辦法:
上面遺留有一個問題,下載下來的jtl檔案匯入結果樹中,我們並不能看到請求資料和響應資料
修改bin目錄下的user.properties檔案,追加配置:
non-gui執行結果GUI檢視,中文亂碼:
修改bin目錄下的user.properties檔案,追加配置:
#The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1
將sampleresult.default.encoding註釋刪掉,並改成utf-8編碼,即:
將之前下載的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檔案匯入結果樹中,我們並不能看到請求資料和響應資料
修改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檢視,中文亂碼:
修改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