在使用 JMeter 进行性能测试时,如果并发数比较大(比如项目需要支持 10000 并发),单台电脑(CPU 和内存)可能无法支持, 这时可以使用 JMeter 提供的分布式测试的功能,使用多台测试机一起来模拟以达到要求的负载量。
- 分布式测试时通常由 1 台控制机(Controller)和 N 台代理机(Agent)。
- 控制机(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 版本和插件最好都一致,否则容易出现一些意外问题。