一、問題背景
當有些項目的用戶數比較大的時候,我們進行壓測的時候也需要較大的併發,而單臺服務器的能夠發送的併發量畢竟是有限的,那如何增加併發量呢?
二、解決方法
利用jmeter的分佈式壓測,jmeter爲了提升併發量,支持分佈式壓測,1臺master,多臺salve,一般來說,master只做統計收集、下發腳本的工作,而不作爲施壓機,主要是出於性能考慮。
Linux下安裝jmeter簡單,直接把jmeter上傳到Linux服務器(服務器上只需要安裝好java即可)。進入apache-jmeter的bin目錄下,更改jmeter爲可執行權限。即安裝成功。
在其他多臺機器上按照同樣的方法部署好jmeter。
三、舉例說明
下面具體舉例說明,
現在假設,壓力機共4臺,10.151.71.185、10.151.71.186、10.151.71.187、10.151.71.192
其中10.151.71.185同時作爲master,其他3臺只做slaver。
1、在作爲slaver的機器上運行jmeter-server;
上面4臺按照安裝的步驟,同時把jmeter安裝在同一個目錄/home後,進入bin目錄,修改3臺slaver機器下的jmeter-server爲可執行,並執行./jmeter-server。執行成功後顯示如下:
2、上傳壓測腳本和外部讀取的csv文件;
只需要上傳UDPtest.jmx腳本到master服務器,節點機不需要上傳,壓測腳本自動會發到slaver試壓機上;但是,如果腳本中涉及從外部讀取的csv文件,那該文件就需要上傳到各個slaver施壓機上。
3、在master機器上修改remote_hosts;
進入到master 185這臺服務器的jmeter的bin目錄下,修改jmeter.properties。修改如下,添加各個slaver節點機的ip,默認通信端口爲1099;
上述方法是寫死了各個slaver機器ip到配置文件中,若想動態的挑選其中部分壓測機,可以採用命令行選項的方式,即在master機器運行命令的時候添加 -R ip:port,ip:port的方法;
4、在master 運行腳本;
發起壓測,在master機器上進入jmeter的bin目錄下,執行如下命令:./jmeter –n –r –t /home/UDPtest.jmx
要提前結束需要ctrl+c,若要重新啓動分佈式壓測,需要在各個slaver上啓動./jmeter-server。然後再master上重新執行步驟4即可。
【友情提示】
A、若是腳本中設置的併發線程數是100,採用3臺slaver機器去施加壓力,那麼對於服務端來說,此時的併發線程數是300。
B、爲了減少出錯的可能性,最好按照如下Jmeter 分佈式要求:
1、各個機器在相同目錄下安裝相同版本的jdk;
2、各個機器在相同的目錄下安裝相同版本的jmeter;
3、配置/etc/hosts的IP和hostname的映射。
4、修改各個機器的jmeter的默認內存參數,從512m調整爲合適大小。
以上就是jmeter的分佈式壓測的實踐中具體配置和小結提示,大家可以收藏。
更多工作中的測試技能幹貨,大家可以關注微信公衆號<大話性能>,會持續不斷分享,更多測試好文章