Jmeter(五十四) – 從入門到精通高級篇 – 如何在linux系統下運行jmeter腳本 – 上篇(詳解教程)

1.簡介

 上一篇宏哥已經介紹了如何在Linux系統中安裝Jmeter,想必各位小夥伴都已經在Linux服務器或者虛擬機上已經實踐並且都已經成功安裝好了,那麼今天宏哥就來介紹一下如何在Linux系統下運行Jmeter腳本。

2.具體步驟

2.1創建Jmeter測試腳本

你要在Linux系統中運行Jmeter腳本首先要有Jmeter。在Windows系統中啟動jmeter,創建Jmeter測試腳本,這裡宏哥以訪問我博客首頁為例

1.啟動Jmeter後,添加線程組,如下圖所示:

2.選中「線程組」,添加取樣器「HTTP請求」,如下圖所示:

3.選中「HTTP請求」,添加監聽器「察看結果樹」,如下圖所示:

4.點擊保存按鈕,腳本保存為test.jmx,運行腳本進行調試直到調試成功,如下圖所示:

5.將線程組修改成100,然後保存,將文件上傳至linux服務器。

2.2運行腳本

1.在Linux服務器的usr目錄下創建一個test文件夾,如下圖所示:

2.將在Windows調試好的基本上傳到此文件夾中,如下圖所示:

3.將腳本上傳至linux服務器,然後就在當前的test目錄下,輸入命令 jmeter -n -t test.jmx -l log.jtl ,運行jmeter腳本。運行結果,如下圖所示:

4.將腳本上傳至linux服務器,或者進入jmeter的bin目錄下,輸入命令 jmeter -n -t /usr/test/test.jmx -l /usr/test/log.jtl ,運行jmeter腳本。運行結果,如下圖所示:

PS:常用命令解析:

# 常見命令說明
-h 幫助:打印出有用的信息並退出
-n 非 GUI 模式:在非 GUI 模式下運行 JMeter
-t 測試文件:要運行的 JMeter 測試腳本文件
-l 日誌文件:記錄結果的文件
-r 遠程執行:啟動遠程服務
-H 代理主機:設置 JMeter 使用的代理主機
-P 代理端口:設置 JMeter 使用的代理主機的端口號

5.跑完之後,在test目錄下,生成兩個文件:一個是jmeter.log(jmeter運行日誌),一個是我們的性能結果文件(log.jtl),我們用命令把log.jtl文件導入windows系統就能查看結果了,如下圖所示:

2.3查看測試報告

1.在windows上啟動jmeter,添加所需的監聽器,導入腳本運行產生的log.jtl文件,查看測試結果,(註:察看結果樹的請求內無信息,後邊宏哥會給出解決方案),如下圖所示:

從上圖可以看出:宏哥前邊線程組設置的是100,這裡的聚合報告的樣本也是100,說明沒有問題,運行的是宏哥上傳的腳本。

以上,即為在linux環境中運行jmeter腳本進行壓測,並生成測試報告的的過程,具體操作,請自行實踐,本文僅供參考。。。

2.4解決結果樹查看無請求信息

1.在windows上啟動jmeter,添加察看結果樹監聽器,導入腳本運行產生的log.jtl文件,查看測試結果,發現察看結果樹的請求內無信息。如下圖所示:

2.解決linux下運行jmeter腳本,導出的jtl文件,用結果樹查看無請求信息問題,解決方法:在linux的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

3.修改好以後,重新運行腳本,重新導入log.jtl文件查看測試的察看結果樹,可以看到請求信息。如下圖所示:

2.5解決中文亂碼

1.察看結果樹,有請求信息了,但是查看響應信息看到中文亂碼了,如下圖所示:

2.解決linux下運行jmeter腳本,導出的jtl文件,用結果樹查看查看響應信息看到中文亂碼了。解決辦法:

修改bin目錄下的user.properties文件,追加配置:

jmeter.save.saveservice.encoding=true

另外:JMeter結果樹響應數據中文亂碼解決辦法:

encoding編碼,打開apache-jmeter-5.4\bin\jmeter.properties文件,搜索「encoding」關鍵字,找到如下配置:

#The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1

將注釋刪掉,並改成utf-8編碼,即:

sampleresult.default.encoding=utf-8

重啟JMeter即可。

3.修改好以後,重新運行腳本,重新導入log.jtl文件查看測試的察看結果樹,可以看到響應信息沒有中文亂碼了。如下圖所示:

3.小結

1.jmeter為了減輕客戶機負擔,沒有默認把這些信息(請求信息)保存,如果想要保存,也可以,需要做一下前邊的配置即可。性能測試建議還是不要開這些配置,會增加報告的大小。

從生產的日誌文件大小就可以看出確實是增加了客戶機的負擔,如下圖所示:

2.修改完jmeter的配置文件信息,如果沒有作用,記得要使用命令 source /etc/profile  運行後,再次嘗試一下。

3.細心的小夥伴或者童鞋們會發現宏哥在登錄Linux服務器的時候不是同一個用戶,最前邊是admin,後邊又是root。這是因為宏哥之前用admin的時候,權限沒有root的大,在運行腳本時,報錯如下: main ERROR FileManager (jmeter.log) java.io.FileNotFoundException: jmeter.log (Permission denied) java.io.FileNotFoundException: jmeter.log (Permission denied)  報了一個權限錯誤。一時間沒有找到解決辦法就切換到root用戶了,然後就成功運行了腳本。後來宏哥覺得是jmeter啟動的日誌文件寫入不了test的文件夾中,於是就給文件夾賦予了最大權限,如下圖所示:

再次運行jmeter腳本運行成功了,如下圖所示:

 4.要注意:

  • 不在JMeter腳本所在的當前目錄中執行命令,需要填寫腳本文件的全路徑。
  • 還有就是運行腳本所產生的jmeter.log文件和結果文件,如果沒有指定生成路徑的話。會在執行JMeter命令的當前目錄中生成。(這點要注意一下)