一、分布式压测原理
1、原理
分布式压测分为两块:控制器(controller)和代理(agent)
- controller负责把脚本分发给agent执行;
- agent负责执行脚本,产生对服务器的实际压力,agent运行 non GUI model,点击jmeter-server.bat即可。agent执行脚本后,把压测的结果发送给controller。
- controller作为控制器不加入实际测试,只负责发送和收集agent信息。
二、window配置
1、配置agent
(1)修改jmeter.propertier
- 找到server_port 去掉 # 设置端口;
- 找到server.rmi.ssl.disable=false 改成true;
# RMI port to be used by the server (must start rmiregistry with same port) server_port=1099 #设置 server_port 端口 ...... # Password of Trust store #server.rmi.ssl.truststore.password=changeit # # Set this if you don't want to use SSL for RMI server.rmi.ssl.disable=true # 改成true
(2)双击jmeter-server.bat,这个ip有用,要配置到controller机器上的配置文件里。
2、配置controller
(1)打开controller的配置文件 jmeter.properties 找到 remote_hosts,把agent的ip配置进去。
(2)打开 controller的配置文件 jmeter.properties,找到 server.rmi.ssl.disable=false 改成 true
#server.rmi.ssl.truststore.password=changeit # # Set this if you don't want to use SSL for RMI server.rmi.ssl.disable=true # 改成true
3、controller打开,运行一个agent
agent服务上显示运行成功。
三、Linux配置
1、agent节点配置
(1)打开配置文件/bin/jmeter.properties 找到并取消这段配置的注释,false改成true;
# Password of Trust store #server.rmi.ssl.truststore.password=changeit # # Set this if you don't want to use SSL for RMI server_port=1099 #修改端 server.rmi.ssl.disable=true # 改成true
(2)输入命令,启动agent节点,jmeter-server后面的参数指定agent的IP。
jmeter-server -Djava.rmi.server.hostname=10.1.44.122
2、控制机配置
(1)打开配置文件 /bin/jmeter.properties配置agent节点的IP
# Remote Hosts - comma delimited remote_hosts=10.1.44.123:1099,10.1.44.122:1099 #代理机ip和端口,可填写多个 #remote_hosts=localhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port) server_port=1099 server.rmi.ssl.disable=true # 改成true
3、运行控制机
jmeter -n -t test.jmx -R 10.1.44.122,10.1.44.123 -l test.jtl 或 jmeter -n -t test.jmx -r -l test.jtl 参数 n:非gui运行 t:指定测试脚本 R:指定多少个 agent 启动并参与测试 r: 代表全部 agent 启动并参与测试 l:生成测试结果文件
四、注意事项
1、保持controller和Agent机器的JDK、jmeter以及插件等配置版本一致;
2、jmeter脚本和测试数据主机和从机两边都要存放。且controller中的jmeter脚本、测试数据的存放路径和agent中的jmeter脚本、测试数据的存放路径一致;
3、确保Controller和Agent机器在同一个子网里面。
4、检查防火墙是否被关闭,端口是否被占用;
5、分布式压测中,通过远程启动代理服务器,默认查看结果树种的响应数据为空,只有错误信息会被报回;
6、分布式测试中,如果一秒启动100个模拟请求,有5个agent,那么需要将脚本的线程数设置为20,否则请求模拟数会变成500,和预期结果相差太大。