利用Jmeter進行分佈式性能測試

  老大交代了個接口性能測試的小任務,本來呢他提議用LR,但我對這麼大體積的玩意兒真不待見,所以就倒騰起JMeter。

   具體任務內容就不多說了,基本要求是有1200的併發。但是我們發現JMeter運行800個線程左右就頂不上去了,基本運行一會就卡死。百度之(不以用百度爲恥),貌似可以用JMeter分佈式測試來達成目的,它所謂的分佈式架構,其實也就是有一個Master或者Controller,控制其餘多臺機器運行,即所謂的 Agent或者Slave 來分擔 JMeter自身的壓力,由此擴展其性能,獲取更大的併發用戶數,只需要做一些配置,還有多態運行着Jmeter的物理機即可,配置如下:

   1. 首先要在環境中所有設備上運行 JMeter 作爲 Load Generator,確定其中一臺設備作爲 Controller,其他的設備作爲 Agent,主要務必要保證所有JMeter版本一致。然後運行所有 Agent設備 上的%JMeter_Home%/bin/JMeter-server.bat文件——此處假定使用兩臺設備 192.168.0.1 和 192.168.0.2 作爲 Agent,192.168.0.100是Controller(局域網通常是一個子網)。

  2. 在Controller 設備的%JMeter_Home%/bin/目錄下找到 JMeter.properties 文件並打開,查找“remote_hosts=”這個字符串,我們會看到這樣一行“remote_hosts=127.0.0.1”,這是默認的遠程Agent設備IP。這裏需要修改爲“remote_hosts=192.168.0.1:1099,192.168.0.2:1099”,其中的 1099 爲 JMeter 的 Controller 和 Agent 之間進行通訊的默認 RMI 端口號。

  3. 保存以上文件,並重新啓動 Controller 機器上的 JMeter.bat打開JMeter,打開 Run -> Remote Start 菜單項,已經可以看到遠程啓動菜單下面有192.168.0.1 ,192.168.0.1兩個IP地址。

  4、如果要讓某個Agent執行,點擊對應的IP地址就可以啓動,如果要運行所有的Agent,可以點擊Run 菜單下的“Remote Run All”菜單。

  這時候我們就遇到一個問題,例如我們要求性能是併發數1200,然後我們有兩臺Agent(此時Controller設備是不執行參與生成併發數據的),那我們寫性能測試腳本的時候,是把併發數寫成600,然後把腳本複製到每一臺Agent設備?還是寫一個併發數1200的腳本,在Controller上運行即可,Controller會自動分配性能壓力?抑或者寫一個併發數爲600在Controller端運行,同樣配置下發到每個Agent上呢?實踐證明是最後一種情況,即每一個Agent上都運行相同併發數,總和是我們的性能需求即可,但是不需要手動複製腳本

  查找資料有些博文說有時候代理的機器太少,需要將Controller設備也當作Agent來滿足性能要求,也就是說有一臺設備需要兼任Controller和Agent。這種情況我沒有實踐過,理論上應該也是可以的,通信上做一個迴環就可以了。此處備註上使用方法:

  需要修改 JMeter.properties文件,將Controller的IP地址寫入。然後,需要打先打開Controller %JMeter_HOME%/bin目錄下的jmeter-server.bat,然後再打開JMeter.bat,此時,進入Run -> Remote Start菜單,可以看到Controller也作爲遠程機器進行運行。


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章