若是測試用到了外部數據文件,那麼請注意這些文件不會被JMeter客戶端分發,所以測試人員須要確保每臺執行機上都保存了這些數據文件(其所在目錄也必須正確)。若是有必要,用戶能夠爲每臺執行機設置不一樣的屬性變量,即在JMeter遠程服務器上編輯user.properties或者system.properties文件。這些屬性將會在JMeter遠程服務器啓動時被識別,並有可能被應用到測試計劃之中,從而影響測試執行(例如,與其餘遠程服務器發生交互)。另外,不一樣的JMeter遠程服務器可能會使用不一樣內容的數據文件(例如,每臺服務器必須使用不一樣的ID,就以此來劃分數據文件)。
要啓動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遠程服務器就會用它來做爲本地端口號。
編輯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啓動和中止。
圖11-4 運行菜單
步驟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。
替換:
`dirname $0`/jmeter -s "$@"
爲:
HOST="-Djava.rmi.server.hostname=[computer_name][computer_domain]
-Djava.security.policy=`dirname $0`/[policy_file]"
`dirname $0`/jmeter $HOST -s "$@"
同時建立一個規則(Qolicy)文件,添加[computer_name][computer_domain]行到/etc/hosts。
3.如何使用不一樣端口號
默認狀況下,JMeter使用標準RMI端口號1099(這是能夠改變的)。要想成功改變使用的端口號,需知足以下條件:
在遠程服務器,啓動Rmiregistry使用新端口號。
在遠程服務器,啓動JMeter並預先定義server_port屬性。
在客戶端,更新remote_hosts屬性,在其中包含remote host:port設置。
從JMeter 2.1.1版本開始,jmeter-server腳本支持改變端口號。例如,假設
測試人員但願使用端口號1664(可能由於1099端口已經被其餘應用程序佔用了)。
C:\JMETER> SET SERVER_PORT=1664
C:\JMETER> JMETER-SERVER [other options]
UNIX系統:
$ SERVER_PORT=1664 jmeter-server [other options]
[N.B. use upper case for the environment variable]
在這兩種狀況下,腳本都會在指定端口上啓動Rmiregistry,接着以遠程服務器模式啓動JMeter,並已經定義了"server_port"屬性。
選定的端口號將會被記錄到遠程服務器的jmeter.log文件中(Rmiregistry不會建立一個日誌文件)。
4.使用採樣批次
測試計劃中的監聽器會把它們的結果返回到JMeter客戶端,而JMeter客戶端默認狀況下會將這些結果寫入到指定文件中,採樣結果會在產生後當即發回JMeter客戶端。這樣就會對網絡和JMeter客戶端產生很大的壓力。用戶能夠經過設置一些屬性,來改變默認操做。
模式(Mode)(採樣結果發送模式)默認是Standard。
Standard:在採樣結果產生後當即發送。
Hold:將採樣結果保存在一個數組中,直到測試結束。這可能會佔用遠程服務器的大量內存。
Batch:當計數器或者時間超過閾值以後,發送保存的採樣結果。
Statistical:當計數器或者時間超過閾值以後,以概要的形式發送採樣結果;採樣結果以線程組(Thread Group)名稱和採樣標籤(Sample Label)進行概要統計。積累的數據域包括:elapsed time、latency、bytes、sample count、error count,其餘數據域將會被丟棄。
Stripped:將成功採樣的響應數據移除。
StrippedBatch:將成功採樣的響應數據移除,並批次發送。
Custom implementation:將模式參數設置爲測試人員的客戶化採樣發送器的類名。該類必須實現接口SampleSender,而且類的構造函數只有一個RemoteSampleListener型的參數。
以下屬性會影響Batch和Statistical模式。
num_sample_threshold:一個批次中的採樣數目(默認爲100)。
time_threshold:等待的毫秒數(默認爲60秒)。