在使用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的信息并汇总。
二、代理机(Agent)配置:
1、Agent机上需要安装JDK、Jmeter,并且配置好环境变量。
2、打开“运行”,输入"cmd",打开运行面板,输入“ipconfig”,找到IP地址,例如是:192.168.100.207
3-打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.100.207:1099,1099是端口号,可以随意自定义。
4、打开jmeter-server.bat文件,就设置完成了,等待控制机(Controller)启动。
三、控制机(Controller)配置:
1、Controller机上需要安装JDK、Jmeter,并且配置好环境变量。
2、打开“运行”,输入"cmd",打开运行面板,输入“ipconfig”,找到IP地址,例如是:192.168.100.190:1099
-打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=remote_hosts=192.168.100.190:1099,192.168.100.207:1099,1099是端口号,可以随意自定义。如果有多台代理机,这里需要把所有的代理机的IP地址和端口号都加入进来。
3.打开jmeter-server.bat文件,设置完成了。
四、开始添加线程组和请求来运行查看结果:
1、打开jmeter.bat文件,添加线程组,编辑线程数,这里设置1个线程数,循环1次,就是一台机器发送1*1=1个请求。两台机器就会有2个请求
tips:
如果遇到Jmeter执行jmeter_server.bat报错java.io.FileNotFoundException:rmi_keystore.jks(系统找不到指定的文件)
1.bin目录下有一个create-rmi-keystore.bat执行这个按提示生成密钥。
会在bin目录下生成一个rmi_keystore.jks文件。
2.修改jmeter.properties文件下server.rmi.ssl.disable=true (记得去除server.rmi.ssl.disable=true前的#)
3. 执行jmeter_server.bat
端口号与设置的不同,需要端口设置:
jmeter.properties设置本机ip:端口
找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1888:
server_port=1099
server.rmi.localport=1099