Jmeter分布式部署


一、為什么要進行分布式部署Jmeter

  對於並發量很大的需求,如上萬並發量,受到CPU和內存的限制,單機模擬場景是實現不了的,為了讓JMeter提供更大的負載能力,須使用它的分布式機制,即多台機器同時產生負載的功能。

  以下參數分析可用於配置負載分布台數的參考:通常,4G內存最多可達到2000左右的並發量。在1.4G Hz~3GHz 的CPU 、1GB 內存的 JMeter 客戶端上,可以處理線程 100~300。但是Web Service 例外。XML處理是 CPU 運算密集的,會迅速消耗掉所有的CPU 。一般來說,以XML技術為核心的應用系統,其性能將是普通Web 應用的 10%~25% 。另外,如果所有負載由一台機器產生,網卡和交換機端口都可能產生瓶頸,所以一個JMeter 客戶端線程數不應超過 100 。其實我們可以根據這個大概的情況自己調試一下,比如單機上放一個數量級的並發量 500、1000跑起來看看CPU的使用情況,最佳狀態是CPU占有率不超過80%。

二、Jmeter分布式執行原理

1、Jmeter分布式測試時,選擇其中一台作為調度機(master),其它機器做為執行機(slave or Agent)。

2、腳本在master的GUI打開,測試計划僅在master上部署即可,執行時,master GUI會把測試計划發送到每台slave上,slave 拿到腳本后就開始執行,slave執行時不需要啟動自己的GUI。每一台jmeter遠程服務器都執行相同的測試計划,jmeter不會在執行期間做負載均衡,每一台服務器都會完整地運行測試計划。

3、執行完成后,slave會把結果回傳給master,master會收集所有slave的信息並匯總。

三、分布式集群的配置

在部署前請保證各slave機的防火牆處於關閉狀態,master與各台slave都可以ping通

1、執行機(slave)配置:

  (1)slave機上需要安裝Jmeter和支持當前Jmeter版本的JDK。(有時在運行Jmeter時會提示JDK版本過低)

  (2)添加環境變量:JMETER_HOME路徑為bin目錄的上一級目錄

      

      這樣啟動jmeter-server服務時,就只會看到Found ApacheJMeter_core.jar

  (3)啟動bin目錄下的:jmeter-server.bat(Linux下是jmeter-server),啟動成功如下圖。

      Windows:

        

      Linux:

         

      Linux下啟動jmeter-server有時會報錯,提示“為知的名稱或服務”,如下圖:

      

      解決辦法:

        1、cat /etc/sysconfig/network查看本機的主機名

        

        2、vi /etc/hosts添加一行本機ip跟主機名映射

        

  (4)上圖上標紅的IP和端口會在master里配置時用到。IP就是slave機器IP,端口默認是1099,端口也可以自定義,這里我改成了1000和1100。 

  (5)多台slave的話,重復1~4步驟就好。

2、調度機(master)配置:

  (1)找到Jmeter的bin目錄下的配置文件jmeter.properties,修改如下配置:

      remote_hosts=127.0.0.1:1000,192.168.182.130:1200,192.168.182.129:1100(多台slave之前用 "," 隔開)

  (2)用Jmeter打開測試腳本,為了調試方便,可以為腳本添加“查看結果樹”和“聚合報告”。

  (3)打開Jmeter,選擇運行→遠程啟動,可以依次點擊遠程啟動中的slave來執行腳本,對應的slave命令行窗口上會看到啟動的信息,全部啟動的話可以選擇遠程全部啟動。遠程停止同理,也可以遠程退出。

     

  每一台slave都執行相同的測試計划,就是在master上設定好的測試計划。

  slave向master回傳信息時如果請求執行成功了則不回傳具體每個請求的Response信息,當你用查看結果樹查看結果時,只能看到取樣結果是200,而響應數據里面是空的。

slave控制台信息:

四、自定義端口

  1、在slave機的Jmeter的bin目錄下,找到jmeter.properties文件,修改如下兩個配置項,比如我這里修改為1200:

      server_port=1200

      server.rmi.localport=1200

  2、啟動slave機上的jmeter-server.bat,如下圖,端口已經修改為:1200

    

  3、修改master機器的jmeter.properties文件:

    remote_hosts=127.0.0.1:1000,192.168.182.130:1200,192.168.182.129:1100

  4、重啟jmeter.bat,如下圖,端口已經變了

    

五、其它說明

  1、調度機(master)和執行機(slave)最好分開,由於master需要發送信息給slave並且會接收slave回傳回來的測試數據,所以mater自身會有消耗,所以建議單獨用一台機器作為mater。

  2、參數文件:如果使用csv進行參數化,那么需要把參數文件在每台slave上拷一份且路徑需要設置成一樣的,Filename這里設定一下(最好放在bin目錄下)。

    

  3、每台機器上安裝的Jmeter版本和插件最好都一致,否則會出一些意外的問題。

  4、如果想要master也分擔負載,讓master自身也執行測試計划,需要把master 的 IP 和 端口也寫到配置文件里,在遠程啟動前,也要把master的 jmeter-server.bat運行,這樣master也能和其他slave一起執行測試計划了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM