1. 程式人生 > >Jmeter以non-gui模式進行分散式測試

Jmeter以non-gui模式進行分散式測試

#測試結束時,退出(在non-gui模式下)

配置jmeter client & server   瞭解了上面的各個引數後,開始配置分散式測試   先看一下官方文件是怎麼說的,中文為我新增的註釋:   1. the firewalls on the systems are turned off.   #1.關閉防火牆   2. all the clients are on the same subnet.   #2.所有的客戶端都在同一個子網內   3. the server is in the same subnet, if 192.x.x.x or 10.x.x.x ip addresses are used. If the server   doesn't use 192 or 10 ip address, there shouldn't be any problems.   #3.server也必須在同一子網內如果使用192.x.x.x或者10.x.x.x這樣的IP地址,如果server沒有使用192或者10這樣的IP地址,(server同client不在同一子網內)將不會有任何問題   4. Make sure JMeter can access the server.   #4.確保Jmeter可以訪問到server   5. Make sure you use the same version of JMeter on all the systems. Mixing versions may not work   correctly.   #5.確保各系統的Jmeter版本保持一致,不同版本的Jmeter將不能很好的工作   分散式測試的思想為:一臺master主機初始化測試並控制多個slave系統,下圖為伺服器和客戶端的結構示意圖:
  下圖為Jmeter實際執行時的結構:   一些術語的解釋:   master,以GUI模式執行,同時控制測試的執行,在這裡就是client,啟動指令碼所在的那臺機器。   slave,執行jmeter-server並從master接收指令、向目標伺服器傳送請求   設定jmeter-server:   用文字編輯器開啟JMETER_HOME/bin目錄下的jmeter.properties檔案,新增執行jmeter-server的主機IP到remote-hosts   remote_hosts=10.0.0.158, 10.0.0.140,localhost   如果你不希望你的客戶端也作為jmeter-server執行的話,把localhost從上面的配置中移除。   寫了這麼多,下面進行實戰階段:
  1、將配置在remote_hosts中的機器上的jmeter-server啟動(windows以管理員身份執行JMETER_HOME/bin目錄下的jmeter-server.bat,linux&macos下執行JMETER_HOME/bin目錄下的jmeter-server)   這裡多說一句,官方文件中有這樣一個配置   1. On the slave systems, go to jmeter/bin directory and execute jmeter-server.bat (jmeter-server on   unix). On windows, you should see a dos window appear with “jre\[version]\bin\rmiregistry.exe”.   If this doesn't happen, it means either the environment settings are not right, or there are   multiple JRE installed on the system. Note: [version] would be the jre version installed on the   system.   1. Open jmeter-server.bat in a text editor   2. go to line 44 and find “:setCP”   3. edit “START rmiregistry” to the full path. Example: “START   C:\<JAVA_HOME>\jre\bin\rmiregistry”   實際上這一步是可以省略掉的(我使用的版本為2.13),文件中的行數也不對,應該是以前版本的了吧,當然配置一下也沒問題   2、在客戶端以gui模式啟動jmeter,然後開啟或者建立一個測試指令碼   3、從gui模式啟動所有的遠端server,方法:執行-遠端全部啟動,看下圖,也可以單獨啟動某一個jmeter-server



如果有jmeter-server沒有啟動或者配置有問題,那麼這次測試不會執行,會報以下錯誤(我這裡是沒有在140這臺機器上啟動Jmeter-server):   啟動成功後,在執行jmeter-server上的機器上可以看到以下日誌輸出   4、至此,指令碼除錯完成,關掉Jmeter GUI(先通過GUI停掉遠端已經開啟的jmeter-server)   5、進入測試指令碼所在的目錄,執行以下命令   jmeter -t "JMS Point-to-Point.jmx" -n -l testresult.csv -r   執行成功後,在客戶端機器上可以看到以下Log輸出:   至此,以經通過non-gui模式執行Jmeter分散式測試了   這裡有一點小貼士:以分散式執行Jmeter,是在所有的server上運行同樣的測試指令碼,也就是說,如果你打算1s起100個執行緒,如果你用5臺機器進行分散式測試,那麼將指令碼除錯至1s起20個執行緒,否則則是1s起了500個執行緒,這樣可能跟你的預期有所差別。   在實踐中發現,通過對Jmeter進行設定調優,單臺客戶機的併發數也很不錯,後面抽空專門寫一篇關於Jmeter調優的文章。