為什么要做聯機負載?
Jmeter本身的性能決定了在使用jmeter進行性能測試的過程中,單台機器能夠模擬的虛擬用戶數不會太多(1000用戶)。如果要進行大量用戶的負載測試,則需要進行聯機負載(分布式負載)。
基礎概念:
1.主控制機:存放JMeter腳本的機器叫做主控制機
2.負載機:被連接並用來運行腳本的機器叫做負載機
前提條件:
·保證在控制機和負載機上都能夠運行Jmeter。(jmeter和jdk版本需一致)
·要保證控制機和負載機、負載機和被測服務器之間的網絡能夠通信。(同一個局域網內)
操作步驟:
1)在控制機上,找到jmeter所在目錄中的bin文件夾下的jmeter.properties文件,找到對應的屬性為:remote_hosts
示例:
# Remote Hosts - comma delimited
remote_hosts=127.0.0.1
#remote_hosts=localhost:1099,localhost:2010
remote_hosts=192.168.100.41:8000,192.168.100.200:1099
表示添加了兩台負載機:
一台是:192.168.100.41:8000,
一台是:192.168.100.200:1099
2)在負載機上啟動Jmeter-server.bat(windows)/Jmeter-server(linux),或者通過命令Jmeter -s來啟動。
PS:Jmeter-server的默認服務端口是1099,如果在負載機上該端口被占用,則我們可以通過修改負載機上的Jmeter的配置文件jmeter.properties中的屬性server_port來指定服務端口。
示例:
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=8000
將Jmeter-server的服務端口改為了8000.
PS:改完之后重啟才會生效
3)重啟控制機上的Jmeter
4)控制機上,打開需要運行的腳本,設置好線程組屬性,就可以通過遠程啟動or遠程全部啟動的方式來運行腳本
·遠程啟動:選中一台負載機來運行腳本。
·遠程全部啟動:所有負載機都同時運行腳本。
注意事項:
·聯機負載時,要保證控制機和負載機的Jmeter的版本、JAVA環境的一致性。
·聯機負載時,腳本的運行環境是負載機的環境。
一般就要保證控制機和負載機的環境的一致性。
對於腳本中用到的第三方文件,包括jar包和參數文件等。
1)對於jar包,只需要保證第三方jar包同時在控制機和負載機的jmeter的lib目錄下存在即可。
2)對於第三方文件,比如參數文件,也要求在控制機和負載機都有。
如果是使用的絕對路徑,則要保證第三方文件在控制機和負載機的絕對路徑的一致。
如果使用相對路徑,則要注意在控制機和負載機上的當前路徑的區別:
在控制機(本地)上時,當前路徑是腳本所在文件夾。
在負載機(遠程)上時,當前路徑是Jmeter的bin目錄。
·聯機負載時,遠程全部啟動時,當前的測試計划是分別、獨立、同步在每一台負載機上執行的。這就意味着此時對服務器造成的實際壓力(RL)和測試計划所設置的壓力(DL)是不一樣的,是和負載機的數量(N)有關的。RL=DL*N