在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需要模拟数以万计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能力,这时可以使用Jmeter提供的分布式功能来启动多台电脑来分压测试。
Jmeter分布式测试原理
1、Jmeter分布式测试时,选择其中一台机器作为控制机(Controller),其它机器做为代理机(Agent)。
2、压测时,Controller会把脚本发送到每台Agent上,Agent 拿到脚本后开始执行,Agent执行时不需要启动Jmeter,只需要把jmeter-server.bat文件打开。
3、压测完成后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总。
下面以windows服务器为控制器,另一台linux服务器作为代理。
1、代理机(Agent)配置
1)、Agent机上需要安装JDK、Jmeter,并且配置好环境变量。
2)、linux控制台,输入命令“ip addr”,找到IP地址
3)、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168..:1099,1099是端口号,可以随意自定义。
也可以以命令的形式修改:vi jmeter.properties
4)、linux服务器上启动Jmeter-server
注意这里,如果直接执行 jmeter-server 命令,会启动失败。指定本地IP,执行以下命令即可成功启动:jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
出现以上界面即为启动成功。
2、控制机(Controller)配置
1)、Controller机上需要安装JDK、Jmeter,并且配置好环境变量。
2)、打开“运行”,输入"cmd",打开运行面板,输入“ipconfig”,找到IP地址:192.168.100.124
3)、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.100.123:1099,192.168.100.124:1099,1099是端口号,可以随意自定义。如果有多台代理机,这里需要把所有的代理机的IP地址和端口号都加入进来。
4)、打开jmeter-server.bat文件,即可。
3、启动控制机上的JMeter,并进入启动 ->远程启动菜单项。就会看到我们刚才添加的两个代理的地址,选中即可运行,如果想同时启动所有代理,选择远程全部启动即可。
控制器上开始测试和完成测试的指示
代理机上开始测试和完成测试的指示