天天看點

JMeter 七:遠端測試

參考:http://jmeter.apache.org/usermanual/remote-test.html

http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf

如果Jmeter用戶端的機器性能不夠好,導緻不能加壓足夠的使用者數到伺服器,或者jmeter用戶端機器所在的網絡受限,這個時候我們就可以使用單個Jmeter用戶端來遠端控制多個jmeter伺服器。

通過遠端跑Jmeter,我們可以在很多個低端計算機上複制測試,然後對被測伺服器産生一個很大的壓力。理論上Jmeter用戶端可以控制任意數量的遠端Jmeter,并通過它們收集所有資料。

包括如下特點:

儲存測試采樣資料到本地機器

用單個機器管理多個jmeter引擎

不需要拷貝test plan到每個伺服器--用戶端會給所有伺服器發送test plan

多個遠端伺服器會跑相同的test Plan。Jmeter不會在伺服器間配置設定負載,也就是說每一個伺服器跑完整的Test Plan。是以假設我們設定了1000個thread,并且我們有6台jmeter伺服器,我們最終會注入6000個Thread。

然而,遠端模式會比單獨跑相同數量的非GUI測試使用更多的資源。如果使用很多個遠端jmeter伺服器,可能會導緻用戶端jmeter過載,或者網絡連接配接發生阻塞。

需要注意的是,如果我們在應用伺服器上執行Jmeter引擎,會加重應用伺服器的負擔,進而造成測試結果被污染。推薦将應用伺服器和Jmeter引擎配置在相同的以太網段内。這樣既不會對應用伺服器造成性能負擔,也可以最小化網絡對測試結果的影響。

使用單個Jmeter用戶端來遠端控制多個jmeter伺服器。

JMeter 七:遠端測試

如上圖, 192.168.0.2 就是JMeter用戶端(主機器),控制其他的伺服器(從機器)。

可以這麼說:

Master 主機器:跑JMeter的機器,由該機器控制其他測試機器。

Slave 從機器:被主機器控制的機器,是真正對被測系統産生壓力的機器。

Target 被測系統:被測試的系統所在機器。也就是被壓的機器。

可以看到下圖中,一個Master主機器控制多台Slave從機器,由從機器對被測系統施壓,進行測試。

JMeter 七:遠端測試

確定所有的節點(主機器和從機器):

使用相同版本的JMeter 以及 Java(使用不同版本的可能會帶來問題)

系統關閉防火牆,或者開放特定端口

主機器和所有從機器最好在同一個子網内

如果測試使用資料檔案,注意jmeter主機器不會發送這些資料檔案到從機器,是以要確定每台從機器都儲存了這些檔案,并且路徑正确。

如果有必要,我們可以編輯user.properties以及system.properties,給每台從機器設定不同的屬性。當從機器啟動,這些屬性可能在 Test Plan中被使用,進而影響它的表現。

不同的從機器可以使用不同的資料檔案。比如,如果每台從機器使用獨一無二的ID,我們可以以此來使用不同的資料檔案。

在所有jmeter從機器上執行腳本:

JMETER_HOME/bin/jmeter-server (unix環境)

JMETER_HOME/bin/jmeter-server.bat (windows環境)

請注意,每個遠端節點上隻能有一個Jmeter從機器,除非我們使用不同的RMI端口。

打開主機器的屬性檔案 JMETER_HOME/bin/jmeter.properties,編輯 remote_hosts屬性,添加遠端Jmeter從機器的IP位址。多個IP位址之間以逗号分隔。

啟動主機器的jmeter,選好Test Plan,點選 Run –> Remote Start,我們會看到菜單下列出所有配置的遠端的從機器的IP。選擇

一個機器就可以在某個從機器上跑 Test Plan 。如果想在所有從機器上跑 Test Plan ,點選 Remote Start All即可。

JMeter 七:遠端測試

GUI模式适合用來debug,真正測試時最好使用指令行方式。

所有遠端從機器停止運作測試後,指令行就會退出。

有兩種指令行啟動方式。

這裡直接在 jmeter.properties 中 remote_hosts定義的所有從機器上執行測試。

這裡先定義遠端從機器,然後在遠端機器上啟動測試。

Jmeter/RMI需要建立一個從主機器到從機器的連接配接,預設使用1099端口。

Jmeter/RMI也需要建立一個從從機器到主機器的連接配接,目的是從從機器傳回測試采樣結果給主機器。這個端口一般是一個更高的端口号。這個端口号可以通過 jmeter.properties的 client.rmi.localport 屬性來配置, 預設該值是0,表示端口号随機配置設定。

如果在主機器和從機器之間有防火牆或者其他的網絡過濾器,我們需要保證它們允許上面連接配接的建立。

預設情況下,Jmeter使用标準RMI端口号1099。參見 jmeter.properties 中的配置。

如果1099号被占用,想更換一個端口号,分為兩步

步驟一:更新 SERVER_PORT值,然後重新啟動 Jmeter從機器。比如更換為1664端口。

windows

Unix

步驟二:主機器重新設定remote_hosts

打開主機器 jmeter.properties檔案,編輯 remote_hosts 值類似 server:1664

測試計劃中的 Listener 會把它們的結果傳回給jmeter主機器,jmeter主機器會将結果寫入到特定檔案。采樣結果産生之後,會同步發送回去。這就會影響伺服器測試的最大throughput值。這種情況下我們就可以改變jmeter的采樣發送方式。

打開jmeter.properties,可以看到備選的mode有多種,比如Standard、Hold、DiskStore、Batch等等。

預設使用的是 StrippedBatch模式。該模式會移除成功的采樣傳回的responseData,然後使用Batch方式來發送。

各種模式具體的差別參見:http://jmeter.apache.org/usermanual/remote-test.html#sendermode

下面有3個屬性。

client.tries :定義建立遠端引擎的嘗試次數。預設值為1,表示僅嘗試一次。

client.retries_delay :兩次嘗試之間的延遲時間。機關為 milliseconds。

client.continue_on_fail:值為 true 表示忽略建立失敗的節點,并繼續在建立成功的節點上執行測試。預設為false,表示嘗試建立之後,隻要存在建立失敗的節點,測試就會失敗。

作者:微微微笑

出處:http://www.cnblogs.com/miniren/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利.