JMeter 分布式执行原理
在使用 JMeter 进行性能测试时,如果并发数比较大(比如项目需要支持 10000 并发),单台电脑(CPU 和内存)可能无法支持, 这时可以使用 JMeter 提供的分布式测试的功能。
JMeter 分布式测试时,选择其中一台作为控制机(Controller),其它机器作为代理机(Agent)。
-
执行时,控制机会把脚本发送到每台代理机上,代理机拿到脚本后就开始执行。代理机执行时不需要启动 JMeter 界面,可以理解它是通过命令行模式执行的。
-
执行完成后,代理机会把结果回传给控制机,控制机会收集所有代理机的信息并汇总。
代理机(Agent)配置
步骤如下:
-
Agent 机上需要安装 JMeter
-
修改服务端口
注意:该步骤非必须。如果是在同一台机器上演示需要使用不同的端口,则可以不修改。
打开 bin/jmeter.properties 文件, 修改server_port
,比如:server_port=2001
- 将 RMI SSL 设置为禁用
打开 bin/jmeter.properties 文件, 修改为:server.rmi.ssl.disable=true
- 运行 Agent 上的 jmeter-server.bat 文件, 启动 JMeter
控制机(Controller)配置
-
修改 JMeter 的 bin 目录下 jmeter.properties 配置文件中的
remote_hosts
配置项- 示例:remote_hosts=192.168.182.100:1099,192.168.182.101:1099
- IP 和 Port 指的是 Agent 机的,多台 Agent 之间用逗号隔开
-
将 RMI SSL 设置为禁用:打开 bin/jmeter.properties 文件, 修改为:
server.rmi.ssl.disable=true
-
启动 JMeter
-
选择菜单:运行 ——> 远程启动/远程全部启动
实现步骤及注意事项
案例
一台控制机和两台执行机,做分布式。要求控制机启动,两台执行机执行,并反馈结果。实现步骤如下:
- 配置代理机一,并启动
- 配置代理机二,并启动
- 配置控制机,并启动
- 添加线程组
- 添加 HTTP 请求
- 添加聚合报告
备注
-
修改完端口要重启 JMeter。
-
控制机和代理机最好分开,由于控制机需要发送信息给代理机并且会接受代理机回传的测试数据,所以控制机自身会有消耗。
-
参数文件:如果使用 csv 进行参数化,那么需要把参数文件在每台 slave 上拷一份且路径需要设置成一样的。
-
每台机器上安装的 JMeter 版本和插件最好都一致,否则容易出现一些意外问题。