一、Jmeter分布式測試基礎
1、Jmeter分布式測試原因:
在使用Jmeter進行接口的性能測試時,由於Jmeter 是JAVA應用,對負載機的CPU和內存消耗比較大。所以當需要模擬數以萬計的並發用戶時,可能會導致單台負載本身扛不住,出現的瓶頸。為了解決以上的問題,Jmeter提供的分布式功能,同時啟動多台電腦進行分布式測試。
2、什么情況下采用分布式測試:
1、在進行壓測的過程中如果出現Jmeter未響應,卡住,反應慢等現象。隨即啟動任務管理器進行查看,如果cup和內存都特別大。就可以說明現在的負載機出現了瓶頸,需要進行分布式測試。
2、隨着並發數的增長,TPS不再增長,即出現瓶頸(排除服務器瓶頸及其他)。可能是現在的負載機出現了瓶頸,需要進行分布式測試。
3、在進行壓測的過程中出現錯誤,如Unrecognized Windows Sockets error: 0: recv failed。可能是現在的負載機出現了瓶頸,需要進行分布式測試。
3、Jmeter分布式執行原理:
1、Jmeter分布式測試時,選擇其中一台作為調度機(master),其它機器做為執行機(slave)。
2、執行時:master會把腳本發送到每台slave上,slave拿到腳本后開始執行,slave執行時不需要啟動Jmeter。只需要把jmeter-server.bat文件打開,它會自動通過非GUI模式來執行。(注意:如果引用到csv等外部的文件,則每台slaver所在的機器都需要相應位置放置該文件。)
3、執行后:slave會把結果回傳給master,master會收集所有slave的信息並匯總。
二、Jmeter分布式測試實戰
1、執行機slave配置:
1、slave機上需要安裝JDK、Jmeter。並且配置好環境變量。
2、打開Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把這一行修改為”remote_hosts=192.168.11.14:1099,1099是端口號(本人使用的是3.3的版本,可以不用寫端口號,Jmeter會自動識別)。

3、打開jmeter-server.bat文件,就設置完成了,等待控制機(Controller)啟動。

2、控制機(Controller)配置:
1、Controller機上需要安裝JDK、Jmeter。並且配置好環境變量。
2、打開jmeter-server.bat文件,就設置完成了,等待控制機(Controller)啟動。
3、打開Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把這一行修改為”remote_hosts=192.168.8.149:1099,192.168.8.174:1099,1099是端口號(本人使用的是3.3的版本,可以不用寫端口號,jmeter會自動識別)。

(此處寫的是執行機的ip),如果有多台代理機,這里需要把所有的代理機的IP地址都加入進來。
4、打開jmeter-server.bat文件,設置完成了。
3、運行分布式測試
以訪問百度為例:




三、Jmeter分布式需要注意的問題:
1、JMeter 的 Controller 和 Agent 之間進行通訊的默認 RMI
2、master和slave機中的jmeter版本必須一致(小版本也得一致)。
3、java的版本也得一致,不能一個java7一個java8(只要大版本一致即可)
4、單個運行某個執行機的IP時,如果提示錯誤:Engine is busy - please try later。

或者提示: Connection refused to host: 192.168.11.14; nested exception is:
java.net.ConnectException: Connection timed out: connect

解決方法:


參考:
---------------------------------------------------------------------------------------------------------------------------
https://www.cnblogs.com/fennudexiaoniao/p/6913395.html
https://www.cnblogs.com/fennudexiaoniao/p/6913395.html
https://www.cnblogs.com/whitewasher/p/6946207.html
