JMeter遠程測試,每個實際測試人員都要學習的
詳解JMeter遠程測試(1)
如果運行JMeter客戶端的機器性能不能滿足測試需要,那么測試人員可以通過單個JMeter GUI客戶端來控制多個遠程JMeter服務器,以便對服務器進行壓力測試,模擬足夠多的并發用戶。通過遠程運行JMeter,測試人員可以跨越多臺低端計算機復制測試,這樣就可以模擬一個比較大的服務器壓力。一個JMeter GUI客戶端實例,理論上可以控制任意多的遠程JMeter實例,并通過它們收集測試數據,如圖11-3所示。這樣一來,就有了如下特性:
保存測試采樣數據到本地機器。
通過單臺機器管理多個JMeter執行引擎。
沒有必要將測試計劃復制到每一臺機器,JMeter GUI客戶端會將它發往每一臺JMeter服務器。
每一臺JMeter遠程服務器都執行相同的測試計劃。JMeter不會在執行機間做負載均衡,每一臺服務器都會完整地運行測試計劃。
在1.4GHz~3GHz的CPU、1GB內存的JMeter客戶端上,可以處理線程100~300。但是Web Service例外。XML處理是CPU運算密集的,會迅速消耗掉所有的CPU。一般來說,以XML技術為核心的應用系統,其性能將是普通Web應用的10%~25%。另外,如果所有負載由一臺機器產生,網卡和交換機端口都可能產生瓶頸,所以一個JMeter客戶端線程數不應超過100。
采用JMeter遠程模式并不會比獨立運行相同數目的非GUI測試更耗費資源。但是,如果使用大量的JMeter遠程服務器,可能會導致客戶端過載,或者網絡連接發生擁塞。
請注意,假如測試人員將JMeter執行引擎安裝在應用服務器(測試目標)上,那么這顯然會加重應用服務器的負擔,測試結果也將變得不可信。作者推薦的方式是將JMeter遠程服務器放在應用服務器(測試目標)所在的同一個網段內。這樣做既可以減少JMeter收集測試結果對網絡產生的沖擊,又可以避免對應用服務器(測試目標)性能產生影響。
圖11-3 JMeter遠程測試原理圖
下面是啟動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標志也有同樣的效果,參見后面的內容。
posted on 2014-03-14 11:04 順其自然EVO 閱讀(2157) 評論(0) 編輯 收藏 所屬分類: jmeter and badboy