1.理論知識
在1.4GHz~3GHz的CPU、1GB記憶體的JMeter用戶端上,可以處理線程100~300。但是,如果所有負載由一台機器産生,網卡和交換機端口都可能産生瓶頸,是以一個JMeter用戶端線程數不應超過100。
采用JMeter遠端模式并不會比獨立運作相同數目的非GUI測試更耗費資源。但是,如果使用大量的JMeter遠端伺服器,可能會導緻用戶端過載,或者網絡連接配接發生擁塞。
請注意,假如測試人員将JMeter執行引擎安裝在應用伺服器(測試目标)上,那麼這顯然會加重應用伺服器的負擔,測試結果也将變得不可信。作者推薦的方 式是将JMeter遠端伺服器放在應用伺服器(測試目标)所在的同一個網段内。這樣做既可以減少JMeter收集測試結果對網絡産生的沖擊,又可以避免對 應用伺服器(測試目标)性能産生影響。

2.配置jmeter遠端測試的基本步驟
步驟1:配置節點
確定所有節點(JMeter用戶端和JMeter遠端伺服器)運作相同版本的JMeter。盡可能在所有作業系統上使用相同的Java版本。
如果測試用到了外部資料檔案,那麼請注意這些檔案不會被JMeter用戶端分發,是以測試人員需要確定每台執行機上都儲存了這些資料檔案(其所在目 錄也必須正确)。如果有必要,使用者可以為每台執行機設定不同的屬性變量,即在JMeter遠端伺服器上編輯user.properties或者 system.properties檔案。這些屬性将會在JMeter遠端伺服器啟動時被識别,并有可能被應用到測試計劃之中,進而影響測試執行(例如, 與其他遠端伺服器發生互動)。另外,不同的JMeter遠端伺服器可能會使用不同内容的資料檔案(例如,每台伺服器必須使用不同的ID,就以此來劃分資料 檔案)
步驟2:啟動遠端伺服器
要啟動JMeter遠端節點,請在執行機上運作JMETER_HOME/bin/jmeter-server (UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows)腳本。
請注意,每個遠端節點上隻能運作一個JMeter遠端伺服器腳本,除非采用不同的RMI端口。從JMeter 2.3.1開始,JMeter遠端伺服器會自己啟動RMI注冊;使用者沒有必要單獨啟動RMI注冊。假設測試人員一定要單獨啟動RMI注冊,可以在遠端節點 上定義JMeter屬性server.rmi.create=false。
預設情況下,JMeter遠端伺服器的RMI使用動态端口号。這樣就會為防火牆配置帶來麻煩,是以JMeter 2.3.2及其以後的版本,會檢查JMeter屬性server.rmi.localport。如果該值非零,JMeter遠端伺服器就會用它來作為本地 端口号。
步驟3:将JMeter遠端伺服器的IP位址添加到用戶端屬性檔案中
編輯JMeter控制機的屬性檔案。在/bin/jmeter.properties檔案中找到屬性"remote_hosts",使用JMeter遠端伺服器的IP位址作為其屬性值。可以添加多個伺服器的IP位址,以逗号作為分隔。
請注意測試人員還可以使用-R指令行選項來指明将會使用的遠端伺服器。這與使用-r 和-Jremote_hosts={伺服器清單}的效果相同。例如jmeter -Rhost1,127.0.0.1,host2。如果測試人員定義JMeter屬性server.exitaftertest=true,那麼遠端伺服器在運作完單個測試後就會退出。-Z标志也有同樣的效果。
步驟4(a):通過GUI用戶端啟動JMeter測試
現在輪到啟動JMeter GUI用戶端了。在MS-Windows環境下運作"bin/jmeter.bat"腳本,在UNIX環境下運作"bin/jmeter"腳本。測試人員 會發現在運作(Run)菜單下,包含兩個子菜單"Remote Start"和"Remote Stop",如圖11-4所示。這兩個子菜單中包含測試人員在屬性檔案中設定的JMeter遠端伺服器IP位址。此刻,請使用遠端啟動和停止來代替普通的 JMeter啟動和停止。
步驟4(b):通過非GUI用戶端啟動JMeter測試
還有另外一種方法,測試人員可以通過非GUI用戶端來啟動遠端伺服器。指令如下:
jmeter -n -t script.jmx -r
或者:
jmeter -n -t script.jmx -R server1,server2...
其他标志可能也有用。
-Gproperty=value:在所有JMeter遠端伺服器中定義一個屬性(可以多次出現)
-Z:在測試結束後退出遠端伺服器。
第一個例子會啟動定義在JMeter屬性remote_hosts中的遠端伺服器;而第二個例子會先定義遠端伺服器清單,接着啟動它們。指令行用戶端會在所有伺服器停止後退出。
1.手動配置JMeter遠端測試
在某些情況下,jmeter-server腳本不能正常工作(如果測試人員使用的作業系統不在JMeter開發者預期的範圍内)。下面介紹如何啟動JMeter遠端伺服器(對應上面的步驟2),其中包含了更多人工操作。
步驟2(a):啟動RMI注冊
從JMeter 2.3.1開始,JMeter遠端伺服器會自己啟動RMI注冊,是以這裡的内容不适用于普通情況。如果要采用曆史版本的操作方法,首先在JMeter遠端伺服器上定義JMeter屬性server.rmi.create=false,并遵循如下指南。
JMeter使用Remote Method Invocation(RMI)作為遠端通信機制。是以,測試人員需要用到JDK "bin"目錄中的RMI注冊程式(名為"rRmiregistry")。在運作Rmiregistry之前,請確定如下jar存在于測試人員的系統 claspath中:
JMETER_HOME/lib/ext/ApacheJMeter_core.jar。
JMETER_HOME/lib/jorphan.jar。
JMETER_HOME/lib/logkit-1.2.jar。
注冊程式需要通路特定JMeter類。運作Rmiregistry無須參數。預設情況下應用程式會監聽端口1099。
步驟2(b):啟動JMeter遠端伺服器
一旦RMI注冊程式運作起來,就啟動JMeter遠端伺服器。JMeter啟動腳本需攜帶"-s"選項。
步驟3和步驟4同上面的介紹。
2.一些小技巧
JMeter/RMI要求建立一個從用戶端到遠端伺服器的連接配接。這就會用到測試人員所選擇的端口号,預設值是1099。JMeter/RMI還要求 建立一個反向連接配接,目的是從遠端伺服器向用戶端傳回測試采樣結果。這就會用到一個更高數字的端口号。如果在JMeter用戶端與JMeter遠端伺服器之 間存在任何防火牆或者網絡過濾器,那麼測試人員就需要確定它們已經被正确配置,并允許相關連接配接通信。如果有必要,請使用監聽軟體來觀察通信的過程。
如果JMeter運作在Suse Linux上,下面這些技巧對測試人員可能會有幫助。預設的安裝可能會啟動防火牆。在這種情況下,遠端測試将無法正常工作。如果測試人員發現連接配接被拒絕 後,可以通過下面的選項打開debugging。從JMeter 2.3.1版本開始,RMI注冊由JMeter遠端伺服器啟動;不過相關選項依然可以通過JMeter指令行傳遞。例如,"jmeter -s -Dsun.rmi.loader.logLevel=verbose"(省略了-J字首)。另外這些屬性還可以被定義在 system.properties檔案中。
解決的方法是從etc/hosts中删除對127.0.0.1和127.0.0.2的回送(Loopback)。 當127.0.0.2的回送無效時,jmeter-server将無法連接配接到Rmiregistry。
替換:
為:
HOST="-Djava.rmi.server.hostname=[computer_name][computer_domain]
-Djava.security.policy=`dirname $0`/[policy_file]"
`dirname $0`/jmeter $HOST -s "$@"
轉載于:https://www.cnblogs.com/lanyufei/p/3851184.html