jmeter(二十三)分佈式測試

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

關於jmeter的介紹和元件做用,以前的博客介紹過,不少其餘同行的博客也夠詳細的,這裏不作介紹,對jmeter不甚瞭解的能夠參考以前的博客:jmeter:菜鳥入門到進階系列git

jmeter官方文檔:用戶手冊github

jmeter源碼:Apache JMeterapache

 

1、爲何要使用分佈式測試服務器

按照通常的壓力機配置,jmeter的GUI模式下(Windows),最多支持300左右的模擬請求線程,再大的話,容易形成卡頓、無響應等狀況,這是限於jmeter其自己的機制和硬件配置。併發

有時候爲了儘可能模擬業務場景,須要模擬大量的併發請求,這個時候單臺壓力機就顯得有心無力。針對這個狀況,jmeter的解決方案是支持分佈式壓測,即將大量的模擬併發分配給分佈式

多臺壓力機,來知足這種大流量的併發請求場景。測試

 

2、分佈式壓測的原理spa

一、分佈式測試中,選擇一臺做爲管理機(Contorller),其餘的機器做爲測試執行的代理機(Agent);插件

二、執行測試時,由Contorller經過命令行將測試腳本發給Agent,而後Agent執行測試(不須要啓動GUI),同時將測試結果發送給Contorller;

三、測試完成,能夠在Contorller上的監聽器裏面看到Agent發來的測試結果,結果爲多個Agent測試結果彙總而成;

 

3、分佈式設置步驟

一、修改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機之間用英文半角逗號隔開,修改保存。

二、啓動jemter

啓動jmeter後,設置線程組、配置元件、取樣器、監聽器等原件,點擊「運行-遠程啓動」:

能夠選擇遠程啓動一個Agent機,或者選擇遠程所有啓動,這樣,就能夠進行分佈式測試了。

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

 

4、注意事項

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

二、若是測試數據有用到CSV或者其餘方式進行參數化,須要將data pools在每臺Agent上覆制一份,且讀取路徑必須保持一致;

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

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

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

六、若是併發較高,建議將Contorller機設置爲只啓動測試腳本和收集彙總測試結果,在配置文件裏去掉Contorller機的IP;

七、分佈式測試中,若是1S啓動100個模擬請求,有5個Agent機,那麼須要將腳本的線程數設置爲20,不然模擬請求數會變成500,和預期結果相差太大。

相關文章
相關標籤/搜索