在使用JMeter进行性能测试时,如果并发数比较大(比如项目需要支持10000并发),单台电脑的(CPU和内存)可能无法支持,这时 可以使用JMeter提供的分布式测试的功能。
JMeter分布式执行原理
- JMeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。
- 执行时,控制机会把脚本发送到每台代理机上,代理机拿到脚本后就开始执行,代理机执行时不需要启动JMeter界面,可以 理解它是通过命令行模式执行的。
- 执行完成后,代理机会把结果回传给控制机,控制机会收集所有代理机的信息并汇总。
代理机(Agent)配置
- Agent机上需要安装JMeter,可以从控制机上拷贝一份出来,因为JMeter是免安装的
- 修改服务端口
- 注意:非必须。如果是在同一台机器上演示需要使用不同的端口,多台机器可以不修改
- 打开bin/jmeter.properties文件,修改
server_port
,比如:server_port=2001
- 将RMI SSL设置为禁用
- 打开bin/jmeter.properties文件,修改为:server.rmi.ssl.disable=true
- 运行Agent上的jmeter-server.bat文件,启动JMeter,注意是jmeter-server.bat
控制机(Controller)配置
- 修改JMeter的bin目录下jmeter.properties配置文件,修改
remote_hosts
- 示例:
remote_hosts=192.168.182.100:1099,192.168.182.101:1099
- IP和Port是Agent机的IP以及自定义的端口,多台Agent之间用","隔开
- 将RMI SSL设置为禁用
- 打开bin/jmeter.properties文件,修改为:server.rmi.ssl.disable=true
- 启动JMeter
- 选择菜单:运行-->远程启动/远程全部启动
注意事项
Changing to JMeter home directory Could not find ApacheJmeter_core.jar
启动jmeter-server.bat如出现上述报错,请在我的电脑——高级设置——环境变量——添加系统变量和path变量,系统变量新增一条JMETER_HOME,为jmeter的安装目录,path新增一条%JMETER_HOME%\bin
如果使用csv进行参数化,那么需要把参数文件在每台代理机上拷一份且路径需要设置成一样的;
运行
分配每一位代理机的线程数,总线程数 = 控制机线程数代理机数,如图 5 X 2 = 10;
结果