一、前提:
1、最近在做一下壓測,但是單台服務器的CPU,內存可能不夠支撐壓測的項目,這時候,我們可以使用Jmeter分布式壓測。
2、本次使用的環境:
- 1台服務器做master(調度器)
- 5台服務器做slave (執行器)
二、原理
1、Jmeter分布式測試時,選擇其中一台作為調度機(master),其它機器做為執行機(slave)可以理解成壓力機。
2、執行時,master會把腳本發送到每台slave上,slave 拿到腳本后就開始執行,slave執行時不需要啟動GUI,啟動jmeter-server.bat(windows)
或者sh jmeter-server.sh
三、步驟
3.1前提:
- 保證幾台服務器用的統一版本的jmeter
- 保證在同一個局域網(可以ping同)
- 報錯或者,conncetion timed(關閉防火牆)
3.2 slave (壓力機)配置,這邊以服務器windows
- 打開jmeter->bin->jmeter.properties 找到server.port 去掉注解,開啟1099遠程端口,端口號可以自己配置的,默認1099
2.保存jmeter.properties
3.啟動jmeter-server.bat (windows)下面
4.有幾台壓力機,就同樣配置一下,啟動server即可
3.3 控制機器的配置
- 打開jmeter->bin->jmeter.properties 找到remote_hosts,吧壓機機的ip加上去,中間用,隔開,如果自定義端口,加上端口號,默認是1099端口號;
2.保存,並且啟動jmeter.bat(也可以命令行執行,減少CPU,內存消耗)
四、壓測
- 准備好壓測腳本,我這邊場景是同時並發10000個線程,測試nginx的承受能力;
- 運行-遠程全部啟動-同時並發5台slave機器,右上角有並發數,綠色的時候是啟動的狀態;
五、補充
- 第一次搞得時候,很多不是同一網段,出現一些常出現的錯誤
- 例如出現以下以下錯誤的時候,首先要檢查是否在同一個網段里面,jmeter是否是同一個版本,然后防火牆是否關閉了,最后端口號是否正確
- 分布式並發的時候之前用5.0的版本總是報錯,個人覺得可能是版本號太高的原因,適當的降低下jmeter版本號