1. 程式人生 > >Jmeter分散式效能測試詳解(2)jmeter配置和命令列模式

Jmeter分散式效能測試詳解(2)jmeter配置和命令列模式

Jmeter目錄結構如下

apache-jmeter-X.Y
apache-jmeter-X.Y/bin
apache-jmeter-X.Y/docs
apache-jmeter-X.Y/extras
apache-jmeter-X.Y/lib/
apache-jmeter-X.Y/lib/ext
apache-jmeter-X.Y/lib/junit
apache-jmeter-X.Y/licenses
apache-jmeter-X.Y/printable_docs

目錄bin檔案介紹

window下.bat字尾

jmeter.bat
執行JMeter(預設情況下為GUI模式)
jmeterw.cmd
在沒有Windows Shell控制檯的情況下執行JMeter(預設為GUI模式)
JMeter-n.cmd
在此上放一個JMX檔案來執行非GUI測試
JMeter-n-r.cmd
在此上放置JMX檔案以遠端執行非GUI測試
JMeter-t.cmd
在此上放置一個JMX檔案以在GUI模式下載入
JMeter-server.bat
以伺服器模式啟動JMeter
mirro-server.cmd
以非GUI模式執行JMeter Mirror Server
shutdown.cmd
執行Shutdown客戶端以優雅地停止非GUI例項
stoptest.cmd
執行Shutdown客戶端以突然停止非GUI例項

linux系統下不帶字尾檔案

JMeter
執行JMeter(預設情況下為GUI模式)。
JMetee-server
以伺服器模式啟動JMeter(使用適當的引數呼叫jmeter指令碼)
jmeter.sh
非常基本的JMeter指令碼(您可能需要修改JVM選項,如記憶體設定)。
mirror-server.sh
以非GUI模式執行JMeter Mirror Server
shutdown.sh
執行Shutdown客戶端以優雅地停止非GUI例項
stoptest.sh
執行Shutdown客戶端以突然停止非GUI例項

命令列選項的完整列表

-?
列印命令列選項並退出
-h, - 幫助
列印使用情況資訊並退出
-v,–version
列印版本資訊並退出
-p,–propfile <引數>
要使用的jmeter屬性檔案
-q,–addprop <引數>
額外的JMeter屬性檔案(s)
-t,–testfile
執行jmeter測試(.jmx)檔案
-l,–logfile <引數>
要將樣本記錄到的檔案
-i, - jmeterlogconf
jmeter日誌記錄配置檔案(log4j2.xml)
-j, - jmeterlogfile
jmeter執行日誌檔案(jmeter.log)
-n,–nongui
以nongui模式執行JMeter
-s,–server
執行JMeter伺服器
-H,–proxyHost <引數>
設定一個供JMeter使用的代理伺服器
-P,–proxyPort
設定代理伺服器埠供JMeter使用
-N,–nonProxyHosts <引數>
設定非代理主機列表(例如* .apache.org | localhost)
-u,–username <引數>
為JMeter要使用的代理伺服器設定使用者名稱
-a,–password <引數>
為JMeter要使用的代理伺服器設定密碼
-J, - jmeterproperty =
定義其他JMeter屬性
-G,–globalproperty =
定義全域性屬性(傳送到伺服器)
例如-Gport = 123
或-Global.properties
-D,–systemproperty =
定義其他系統屬性
-S,–systemPropertyFile <引數>
額外的系統屬性檔案
-f,–forceDeleteResultFile
在開始測試之前強制刪除現有的結果檔案
-L,–loglevel =
[category =] level例如jorphan = INFO,jmeter.util = DEBUG或com.example.foo = WARN
-r,–runremote
啟動遠端伺服器(按remote_hosts中的定義)
-R,–remotestart <引數>
啟動這些遠端伺服器(重寫remote_hosts)
-d,–homedir <引數>
jmeter主目錄下使用
-X,–remoteexit
測試結束時退出遠端伺服器(非GUI)
-g,–reportonly
僅從測試結果檔案生成報告儀表板
-e,–reportatendofloadtests
負載測試後生成報告儀表板
-o,–reportoutputfolder <引數>
輸出資料夾的報告儀表板

  • 注意:如果JMeter日誌檔名包含成對單引號,則格式化為SimpleDateFormat(應用於當前日期),例如jmeter_’yyyyMMddHHmmss’.log

JMeter自定義JVM設定

目的根據伺服器配置,制定jvm引數執行jmeter服務,達到更好效能。

修改方式幾種:

bin下setenv檔案設定

JVM_ARGS =“ - Xms1024m -Xmx1024m -Dpropname = value”

bin下jmeter檔案設定

HEAP:=”-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m

執行jmeter指令碼啟動時,通過屬性設定—-推薦

JVM_ARGS =“ - Xms1024m -Xmx1024m”jmeter -t test.jmx [etc.]

setenv環境變數設定

重點關注JM_LAUNCH、JVM_ARGS引數

DDRAW
影響直接繪製使用的JVM選項,例如-Dsun.java2d.ddscale = true。預設為空。
GC_ALGO
JVM垃圾收集器選項。預設為-XX:+ UseG1GC -XX:MaxGCPauseMillis = 250 -XX:G1ReservePercent = 20

啟動JMeter時使用的JVM記憶體設定。預設為-Xms1g -Xmx1g -XX:MaxMetaspaceSize = 256m
JMETER_BIN
JMeter bin目錄(必須以\結尾)。當setenv.bat被呼叫時,值會被猜到。
JMETER_COMPLETE_ARGS
如果指定,則僅使用JVM_ARGS和JMETER_OPTS。所有其他選項,如HEAP和GC_ALGO將被忽略。預設為空。
JMETER_HOME
安裝目錄。將從jmeter.bat的位置猜測
JMETER_LANGUAGE
Java執行時選項指定使用的語言。預設為:-Duser.language =“en”-Duser.region =“EN”
JM_LAUNCH
java可執行檔案的名稱,如java.exe(預設)或javaw.exe
JVM_ARGS
啟動JMeter時使用的Java選項。這些將被最後新增到java命令中。預設為空

JMeter類路徑

JMETER_HOME / lib目錄
JMETER_HOME / lib / ext目錄
如果您開發了新的JMeter元件,那麼您應該將它們打包並將jar複製到JMeter的lib / ext目錄中。
JMeter會自動在這裡找到的任何jar中找到JMeter元件。
不要將lib / ext用於外掛使用的實用程式jar或依賴關係jar; 它僅用於JMeter元件和外掛。
如果您不想將JMeter外掛jar放入lib / ext目錄中,請在jmeter.properties中定義屬性search_paths。

代理使用JMeter

請使用以下引數從命令列執行jmeter [.bat]檔案:
-H
[代理伺服器主機名或IP地址]
-P
[代理伺服器埠]
-N
[非代理主機](例如* .apache.org | localhost)
-u
[代理身份驗證的使用者名稱 - 如果需要]
-一個
[代理驗證密碼 - 如果需要]

例如
jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost

還可以使用–proxyHost,–proxyPort,–username和–password作為引數名稱

非GUI模式(命令列模式)

對於負載測試,您必須在此模式下執行JMeter(無GUI)以從中獲得最佳結果。為此,請使用以下命令選項:

-n
這指定JMeter將以非gui模式執行
-t
[包含測試計劃的JMX檔案的名稱]。
-l
[記錄樣本結果的JTL檔案的名稱]。
-j
[JMeter執行日誌檔案的名稱]。
-r
在由JMeter屬性“ remote_hosts ” 指定的伺服器中執行測試
-R
[遠端伺服器列表]在指定的遠端伺服器上執行測試
-G
[到CSV檔案的路徑]僅生成報告儀表板
-e
負載測試後生成報告儀表板
-o
輸出資料夾負載測試後生成報告儀表板的位置。資料夾不能存在或為空
該指令碼還允許您指定可選的防火牆/代理伺服器資訊:

-H
[代理伺服器主機名或IP地址]
-P
[代理伺服器埠]

jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000

伺服器模式

對於分散式測試,在遠端節點上以伺服器模式執行JMeter,然後從GUI控制伺服器。您也可以使用非GUI模式執行遠端測試。要啟動伺服器,請在每臺伺服器主機上執行jmeter-server [.bat]。

該指令碼還允許您指定可選的防火牆/代理伺服器資訊:

-H
[代理伺服器主機名或IP地址]
-P
[代理伺服器埠]
示例:
jmeter-server -H my.proxy.server -P 8000
如果您希望伺服器在單個測試執行後退出,請定義JMeter屬性server.exitaftertest = true。

要以非GUI模式從客戶端執行測試,請使用以下命令:

jmeter -n -t testplan.jmx -r [-Gprop = val] [-Global.properties] [-X]
哪裡:
-G
用於定義要在伺服器中設定的JMeter屬性
-X
意味著在測試結束時退出伺服器
-Rserver1,Rserver2
可以用來代替-r來提供要啟動的伺服器列表。覆蓋remote_hosts,但不定義該屬性。

命令列覆蓋屬性

Java系統屬性和JMeter屬性可以直接在命令lin上覆蓋(而不是修改jmeter.properties)。為此,請使用以下選項:

-D [prop_name] = [值]
定義一個java系統屬性值。
-J [prop_name] = [值]
定義一個本地JMeter屬性。
-G [prop_name] = [值]
定義要傳送到所有遠端伺服器的JMeter屬性。
-G [propertyfile]
定義一個包含要傳送到所有遠端伺服器的JMeter屬性的檔案。
-L [類別] = [優先]
覆蓋日誌記錄設定,將特定類別設定為給定優先順序。
的-L標誌也可以在沒有類別名稱用於設定根記錄級別。

例子:

jmeter -Duser.dir = / home / mstover / jmeter_stuff -Jremote_hosts = 127.0.0.1 -Ljmeter.engine = DEBUG
jmeter -LDEBUG

記錄和錯誤訊息

從3.2版開始,JMeter日誌記錄不再通過諸如jmeter.properties之類的屬性檔案進行配置,而是通過Apache Log4j 2配置檔案(預設情況下啟動JMeter的目錄中的log4j2.xml)進行配置,而不是。此外,包括JMeter和外掛的每個程式碼必須使用SLF4J庫從3.2開始保留日誌。

如果您想將org.apache.http類別的日誌級別更改為除錯級別,則可以在啟動JMeter之前在log4j2.xml檔案中簡單地新增(或取消註釋)以下記錄器元素。

<Loggers>
    <!-- SNIP -->
    <Logger name="org.apache.http" level="debug" />
    <!-- SNIP -->
  </Loggers>

特定類別或根記錄器的日誌級別可以直接在命令列上覆蓋(而不是修改log4j2.xml)。為此,請使用以下選項:

-L [類別] = [優先]

jmeter -Ljmeter.engine=DEBUG
jmeter -Lorg.apache.jmeter.engine=DEBUG
jmeter -Lcom.example.foo=DEBUG
jmeter -LDEBUG

命令列選項和屬性檔案順序處理

  1. -p propfile
  2. 載入jmeter.properties(或-p選項中的檔案)
  3. -j日誌檔案
  4. 記錄被初始化
  5. 載入user.properties
  6. 載入system.properties
  7. 處理所有其他命令列選項