jmeter(二十三)分布式測試


jmeter用了一年多,也斷斷續續寫了一些相關的博客,突然發現沒有寫過分布式測試的一些東西,這篇博客就介紹下利用jmeter做分布式測試的一些技術點吧,權當參考。。。

關於jmeter的介紹和元件作用,之前的博客介紹過,很多其他同行的博客也夠詳細的,這里不做介紹,對jmeter不甚了解的可以參考之前的博客:jmeter:菜鳥入門到進階系列

jmeter官方文檔:用戶手冊

jmeter源碼:Apache JMeter

 

一、為什么要使用分布式測試

按照一般的壓力機配置,jmeter的GUI模式下(Windows),最多支持300左右的模擬請求線程,再大的話,容易造成卡頓、無響應等情況,這是限於jmeter其本身的機制和硬件配置。

有時候為了盡量模擬業務場景,需要模擬大量的並發請求,這個時候單台壓力機就顯得有心無力。針對這個情況,jmeter的解決方案是支持分布式壓測,即將大量的模擬並發分配給

多台壓力機,來滿足這種大流量的並發請求場景。

 

二、分布式壓測的原理

1、分布式測試中,選擇一台作為管理機(Contorller),其他的機器作為測試執行的代理機(Agent);

2、執行測試時,由Contorller通過命令行將測試腳本發給Agent,然后Agent執行測試(不需要啟動GUI),同時將測試結果發送給Contorller;

3、測試完成,可以在Contorller上的監聽器里面看到Agent發來的測試結果,結果為多個Agent測試結果匯總而成;

 

三、分布式設置步驟

1、修改Contorller配置

打開Contorller機下jmeter安裝文件下的bin目錄:jmeter.properties文件,搜索remote_hosts=127.0.0.1,將Agent機的IP和端口寫在后面,比如:

 remote_hosts=127.0.0.1,127.0.0.2:80,127.0.0.3:80 

其中127.0.0.2和127.0.0.3為Agent機的IP,每個Agent機之間用英文半角逗號隔開,修改保存。

2、啟動jemter

啟動jmeter后,設置線程組、配置元件、取樣器、監聽器等原件,點擊“運行-遠程啟動”:

可以選擇遠程啟動一個Agent機,或者選擇遠程全部啟動,這樣,就可以進行分布式測試了。

PS:上面的例子中,127.0.0.2和127.0.0.3為舉例說明,具體實踐請修改為對應的Agent機IP以及端口。

 

四、注意事項

1、保持Contorller和Agent機器的JDK、jmeter以及插件等配置版本一致;

2、如果測試數據有用到CSV或者其他方式進行參數化,需要將data pools在每台Agent上復制一份,且讀取路徑必須保持一致;

3、確保Contorller和Agent機器在同一個子網里面;

4、檢查防火牆是否被關閉,端口是否被占用(防火牆會影響腳本執行和測試結構收集,端口占用會導致Agent機報錯);

5、分布式測試中,通過遠程啟動代理服務器,默認查看結果樹中的響應數據為空,只有錯誤信息會被報回;

6、如果並發較高,建議將Contorller機設置為只啟動測試腳本和收集匯總測試結果,在配置文件里去掉Contorller機的IP;

7、分布式測試中,如果1S啟動100個模擬請求,有5個Agent機,那么需要將腳本的線程數設置為20,否則模擬請求數會變成500,和預期結果相差太大。

 

 


免責聲明!

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



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