1. 程式人生 > >Jmeter系列(40)- 詳解 Jmeter CLI 模式

Jmeter系列(40)- 詳解 Jmeter CLI 模式

如果你想從頭學習Jmeter,可以看看這個系列的文章哦

https://www.cnblogs.com/poloyy/category/1746599.html

 

什麼是 CLI 模式

  • CLI = Common Line,命令列模式,我們常說的 NON GUI 模式,無介面模式
  • 真正做負載測試時,應該使用 CLI 模式執行,而不是 GUI

 

啟動 Jmeter GUI 時的提示

使用 jmeter.bat 執行時會有一個 cmd 視窗

 

官方也說了

負載測試不要用 GUI 模式,GUI模式僅用於建立測試計劃和除錯指令碼

增加 Java 堆空間來滿足你的測試環境(後面再講解)

 

用 CLI 模式的好處

將系統大部分資

 

CLI 模式可選引數

欄位含義
-n 指定 JMeter 將在 cli 模式下執行
-t 包含測試計劃的 jmx 檔名稱
-l 記錄測試結果的 jtl 檔名稱
-j 記錄 Jmeter 執行日誌的檔名稱
-g 輸出報告檔案( .csv 檔案)
-e 生成 html 格式的測試報表 
-o
  • 生成測試報表的資料夾
  • 資料夾不存在或為空

 

伺服器相關引數

欄位含義
-H 代理伺服器的 host 或 ip
-P 代理伺服器的 port 
-r 指定所有遠端伺服器中執行測試
-R 在指定的遠端伺服器中執行測試
-X 伺服器執行完指令碼後自動停止 jmeter-server 

 

屬性引數

Java 系統屬性和 JMeter 屬性可以直接通過以下命令進行覆蓋,而不用手動修改 jmeter.properties

格式含義
-D[prop_name]=[value] 定義一個 Java 系統屬性值
-J[prop_name]=[value] 定義本地 JMeter 屬性
-G[prop_name]=[value] 定義要傳送到所有遠端伺服器的 JMeter 屬性
-G[propertyfile] 定義一個包含 JMeter 屬性的檔案,該檔案將傳送到所有遠端伺服器
-L[category]=[priority]
  • 覆蓋日誌記錄設定,將特定類別設定為給定的優先順序
  • 設定根日誌記錄級別 

 

栗子一

jmeter -n -t FlaskDemo.jmx -l result/report.jtl
  • 執行 FlaskDemo.jmx 指令碼,並在 result 目錄下生成 report.jtl 報告
  •  report.jtl 存在也沒關係,可以自動覆蓋

 

 

 

栗子二

jmeter -n -t FlaskDemo.jmx -l result/report.jtl -e -o report
  • 執行  FlaskDemo.jmx  指令碼
  • 在 result 目錄下生成 report.jtl 報告
  • 最後在 report 目錄下生成測試報表資料夾
  • 切記: report.jtl 必須不存在, report 目錄必須不存在或者為空

後面再用一篇文章詳細講解 HTML 報告的細節

 

栗子三

jmeter -g report.jtl -o report
  • 將 .jtl 檔案轉換為 .html 檔案,並儲存到 report 資料夾中
  • 類似栗子二,只不過跳過了執行 .jmx 檔案的步驟,直接將 .jtl 檔案轉換為 .html 檔案

和栗子二的結果一樣

 

在 Jmeter GUI 中有一個類似的功能

點選 Tools

 

選好 jtl 檔案,properties 配置檔案,存放 HTML 報告的資料夾

 

栗子四

jmeter -n -t FlaskDemo.jmx -r -l result/report.jtl  

啟動所有遠端 slave 機執行 FlaskDemo.jmx   ,並在 result 目錄下生成 report.jtl 

 

重點

會執行 jmeter.properties 的 remote_hosts 填的所有遠端 slave 機,這裡有兩臺:一臺是虛擬機器,另一臺是本機也充當 slave 機

 

master 機

 

虛擬 slave 機

 

本地 slave 機

 

栗子五

jmeter -n -t FlaskDemo.jmx -l result/report.jtl  -R 172.20.72:38:1234,127.0.0.1:1234

啟動指定的遠端 slave 機執行 FlaskDemo.jmx  ,並在 result 目錄下生成 report.jtl 

和 -r 不一樣, -R 是指定slave機的,並不是所有 slave 機

 

master 機

 

slave 機

 

栗子六

jmeter -n -t FlaskDemo.jmx -l result/report.jtl  -R 172.20.72:38:1234 -X

跟栗子五的基本一樣,只不過加了 -X,讓遠端伺服器在執行完指令碼後自動退出 jmeter-server 

 

master 機

跑了兩次,第一次沒有 -X,第二次加了 -X

 

slave 機

 

當然想一勞永逸的話

可以將屬性 jmeterengine.remote.system.exit 設定為 true(預設值為 false ),則 JMeter 將在測試結束後停止 RMI 之後呼叫 System.exit(0),但不建議