JMeter分布式压测

1. JMeter分布式测试场景

      在使用 JMeter 进行性能测试时,如果并发数比较大 ( 比如项目需要支持 10000 并发 ) ,单台电脑的 (CPU 和内存 ) 可能无法支持,这时可以使用JMeter 提供的分布式测试的功能。

2. JMeter分布式执行原理

       JMeter 分布式测试时,选择其中一台作为控制机 (Controller) ,其它机器做为代理机 (Agent)
执行时,控制机会把脚本发送到每台代理机上,代理机拿到脚本后就开始执行,代理机执行时不需要启动 JMeter 界面,可以理解它是通过命令行模式执行的。执行完成后,代理机会把结果回传给控制机,控制机会收集所有代理机的信息并汇总。

2.1 代理机(Agent)配置

1. Agent 机上需要安装 JMeter
2. 修改服务端口
- 注意:非必须。如果是在同一台机器上演示需要使用不同的端口,多台机器可以不修改
- 打开 bin/jmeter.properties 文件,修改 `server_port` ,比如: `server_port=2001`
3. RMI SSL 设置为禁用
- 打开 bin/jmeter.properties 文件,修改为: server.rmi.ssl.disable=true
4. windows: 运行 Agent 上的 jmeter-server.bat 文件,启动jmeter
    linux:运行如果配置了JMeter环境变量,直接输入:
                方法一:
                jmeter-server -Djava.rmi.server.hostname=xxx.xx.2.109 ,启动 anget                            jmeter-server 后面的参数指定 agent 的 IP这里是启动slave上的jmeter服务。
                方法二:后台启动jmeter-server方式
                nohup jmeter-server -Djava.rmi.server.hostname=192.168.88.52 &

2.2控制机(Controller)配置

1. 修改 JMeter bin 目录下 jmeter.properties 配置文件,修改 `remote_hosts`
- 示例: `remote_hosts=192.168.182.100:1099,192.168.182.101:1099`
- IP Port Agent 机的 IP 以及自定义的端口,多台 Agent 之间用 "," 隔开
2. RMI SSL 设置为禁用
- 打开 bin/jmeter.properties 文件,修改为: server.rmi.ssl.disable=true
3. windows:在jmeter的bin目录下, 运行 jmeter-server.bat 文件,启动jmeter
    linux:运行如果配置了JMeter环境变量,直接输入:
                方法一:
                jmeter-server -Djava.rmi.server.hostname=xxx.xx.2.109 ,启动 anget                            jmeter-server 后面的参数指定 agent 的 IP这里是启动slave上的jmeter服务。
                方法二:后台启动jmeter-server方式
                nohup jmeter-server -Djava.rmi.server.hostname=192.168.88.52 &
4. windows: 选择菜单:运行 --> 远程启动 / 远程全部启动
     linux: jmeter -n -t community-linux.jmx  -R 192.168.88.52,192.168.88.53 -l reult_new.jtl
-R:后面的是代理机的ip,对于jmeter的无非GUI方式进行压测不了解的可以查看笔者之前的文章进行学习
Linux下使用JMeter进行性能测试_Yasar.l的博客-CSDN博客
 

注意: 

1. 修改完jmeter的配置要重启 JMeter
2. 控制机和代理机最好分开,由于控制机需要发送信息给代理机并且会接受代理机回传的测试数据,所以控制机自身会有消耗
3. 参数文件:如果使用 csv 进行参数化,那么需要把参数文件在每台 slave 上拷一份且路径需要设置成一样的;
4. 每台机器上安装的 JMeter 版本和插件最好都一致,否则会出一些意外的问题;

你可能感兴趣的:(性能测试,jmeter,分布式)