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命令的當前目錄中生成。(這點要注意一下)