1. 程式人生 > >效能測試十八:jmeter分散式

效能測試十八:jmeter分散式

 

一臺壓力機產生得壓力是有限的,尤其是jmeter,java本來效能就不是很好,併發特別多的時候,jmeter的效能會急劇下降,正常的介面,若單臺壓力機,超過1000併發以後,jmeter的效能就不怎麼行了    所以需要多個壓力機,即多個機器部署jmeter產生壓力

分散式測試步驟:
系統HOSTS檔案中進行類似 本機IP 主機名的配置
如10.0.0.23 zhoucentos,否則啟動jmeter server會報錯!

1,在每臺機器上都部署 jmeter
2,如果是java指令碼,將java指令碼和相關lib包都放在jmeter目錄lib/ext下
3,將jmeter的場景檔案jmx上傳到伺服器上的任意位置,jmx只放在主壓力機上即可,如果有引數檔案,需將引數檔案放到所有壓力機與主壓力機的相同目錄下
4,在每臺機器上進入到jmeter的bin目錄下,都啟動nohup ./jmeter-server &(後臺啟動jmeter-server服務)
5,進入到jmeter目錄下,將兩臺機器上的jmeter下所有檔案都賦予可執行許可權,chmod -R +x ./*
6,在主jmeter的bin目錄下,修改jmeter.properties,將其中的remote_hosts修改為作為壓力機的兩臺機器ip,remote_hosts=127.0.0.1,192.168.0.102?
7,在主jmeter的機器上,執行/export/servers/apache-jmeter-xxx/bin/jmeter -n -t jdbc.jmx -l result -jtl -r(示例,具體目錄和路徑自定義)

關鍵步驟:
1,如果是http指令碼,在controller的機器上有指令碼檔案即可;
如果是Java指令碼,在每一臺機器上都得有指令碼檔案和依賴的jar包
2,進到Jmeter 根目錄下需要新增執行許可權 chmod -R +x ./*

 

以我的虛擬機器為例:

先正常關閉虛擬機器

liunx虛擬機器上右鍵複製,勾選重新初始化mac地址,完全複製

然後都啟動,用Xshell連線,若副本沒有ip則自己去配置一下,參考Xshell連線liunx

系統HOSTS檔案中進行類似 本機IP 主機名的配置: vi /etc/hosts   每臺機器都要配

 

 

1···、

2···、

3···

4、在每臺機器上進入到jmeter的bin目錄下,都啟動nohup ./jmeter-server &(後臺啟動jmeter-server服務)

啟動server

第一種方式:阻塞式的啟動,即啟動成功後不允許退出,若退出則關閉此jmeter服務程序 ,想做其他動作就只能複製一個ssh渠道,不建議用此方法

若這一步報未知的主機XXX,就是hosts裡面的ip和名字沒配好

第二種方式:以後臺的方式啟動nohup ./jmeter-server &   (此方式因為是後臺掛起,所以看不到是否有報錯)

把要後臺啟動的程式放在nohup和&之間即可

nohup:非掛起的意思,nohup可以把任何檔案都以後臺的形式啟動

此時再敲一下回車即可,輸入 ps -ef|grep jmeter-server  檢視此程序

所有機器都要啟動jmeter-server

!ps即可執行最近一次執行的ps命令

5、進入到jmeter目錄下,將兩臺機器上的jmeter下所有檔案都賦予可執行許可權,chmod -R +x ./*

-R:如果當前賦予許可權的資料夾下還有資料夾,則把下面的資料夾也賦予許可權

6、在主jmeter的bin目錄下,修改jmeter.properties,將其中的remote_hosts修改為作為壓力機的兩臺機器ip,remote_hosts=127.0.0.1,192.168.0.102?

 vi jmeter.properties

 

7、在主jmeter的機器上,執行/export/servers/apache-jmeter-xxx/bin/jmeter -n -t jdbc.jmx -l result -jtl -r(示例,具體目錄和路徑自定義)

 啟動要被壓測的伺服器上的tomcat

回到存放jmx指令碼的目錄下

檢視指令碼配置項有沒有問題,有就修改

根據HTTPS查詢到請求的內容

由於是多機執行此指令碼,如果ip是localhost的話,相當於是所有jmeter壓力機自己壓自己,所以需將ip改為被壓伺服器的ip

此時先彆著急執行多機壓測,先看一下單機壓測是否成功,如果單機壓測都失敗,那麼多機壓測也一定會失敗

錯誤率0,此時可以ctrl+c停止單機壓測,並開始多機壓測

第一種方式:執行命令:jmeter -n -t time.jmx -l time.jtl -r

-r:jmeter執行時讀取到-r,就會去配置檔案中讀取裡面的ip,並將讀取到的ip下的jmeter全部執行

之前處理結果報告的方式一樣可以處理此結果報告

第二種方式:執行命令 jmeter -n -t time.jmx -l time.jtl -R ip1,ip2

jmeter讀取到-R,不回去讀取配置檔案裡面的ip,會讀取R後面跟的ip,並啟動

此方法不建議,如果機器多的話,命令會非常長

如果此處提示tobusy,則需要將tomcat-server重新啟動一下,全部重新起一下

如,多機壓測未完成,就Ctrl+c強制停止,此時其他機器還在跑,這個時候再次執行多機壓測指令碼,就會tobusy

 

重啟jmeter-server:先kill掉程序,再啟動

先執行 ps -ef|grep jmeter-server  找到jmeter-server的程序

執行:kil -9 埠號,強制關閉

然後在去啟動jmeter-server